Java 检查字段是否被覆盖

Java 检查字段是否被覆盖,java,checkstyle,Java,Checkstyle,checkstyle是否具有检查子类是否覆盖父类的公共或受保护字段的规则 比如说 class Ancestor { public static final int VALUE = 123; } class Descendant extends Ancestor { public static final int VALUE = 100; // <-- this is unwanted } 类祖先{ 公共静态最终int值=123; } 类后代扩展了祖先{ public sta

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

比如说

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

class Descendant extends Ancestor {
   public static final int VALUE = 100; // <-- this is unwanted
}
类祖先{
公共静态最终int值=123;
}
类后代扩展了祖先{

public static final int VALUE=100;//覆盖语义不适用于静态字段。当您在
子代
中访问
时,100将用作值。您还可以使用
父代.VALUE
引用超类的值

现在,避免混淆的最佳方法是始终使用类名限定静态成员,如
祖先.VALUE
后代.VALUE
。IDE(如eclipse)允许您强制执行此规则,但在任何静态代码分析工具中都没有看到。下面是如何在eclipse中强制执行此规则的屏幕截图


您不能重写Java中的字段。在您的示例中,
祖先.VALUE
不同于
后代.VALUE
。一个字段不会重写另一个字段。对它们的任何引用都是在编译时确定的。@SteveKuo,这就是我想禁止它的原因。可能会意外创建这样的字段,这可能会导致错误。