checkstyle是否具有检查子类是否覆盖父类的公共字段或受保护字段的规则。
例如
class Ancestor {
public static final int VALUE = 123;
}
class Descendant extends Ancestor {
public static final int VALUE = 100; // <-- this is unwanted
}
我想用checkstyle以某种方式禁止这种情况。
答案 0 :(得分:2)
覆盖语义不适用于静态字段。当您在VALUE
中访问Descendant
时,将使用100作为值。您还可以使用Ancestor.VALUE
引用超类的VALUE。
现在,避免混淆的最佳方法是始终通过使用Ancestor.VALUE
和Descendant.VALUE
等类名对其进行限定来访问静态成员。 IDE(如eclipse)允许您强制执行此规则,但在任何静态代码分析工具中都没有看到这一点。以下是如何在eclipse中强制执行此操作的屏幕截图