检查字段是否被覆盖

时间:2012-01-31 20:23:22

标签: java checkstyle

checkstyle是否具有检查子类是否覆盖父类的公共字段或受保护字段的规则。

例如

class Ancestor {
   public static final int VALUE = 123;
}

class Descendant extends Ancestor {
   public static final int VALUE = 100; // <-- this is unwanted
}

我想用checkstyle以某种方式禁止这种情况。

1 个答案:

答案 0 :(得分:2)

覆盖语义不适用于静态字段。当您在VALUE中访问Descendant时,将使用100作为值。您还可以使用Ancestor.VALUE引用超类的VALUE。

现在,避免混淆的最佳方法是始终通过使用Ancestor.VALUEDescendant.VALUE等类名对其进行限定来访问静态成员。 IDE(如eclipse)允许您强制执行此规则,但在任何静态代码分析工具中都没有看到这一点。以下是如何在eclipse中强制执行此操作的屏幕截图

enter image description here