我有一个具有静态初始化方法initDefaults的父类(具体来说是来自GMF)
public Class Parent{
public static initDefaults(){
...
}
}
我有一个自定义子类扩展父类
public Class CustomSubclass extends Parent{
public CustomSubclass(){
super();
..
}
}
在我的调用类中,我使用CustomSubclass名称调用initDefaults
方法,即,CustomSubclass.initDefaults()
,但是eclipse自动更正这个并输入Parent.initDefaults()
。
public Class ExampleClass{
public void initializer(){
// CustomSubclass.initDefaults(); this is what I typed
Parent.initDefaults(); // this is what eclipse corrected
...
}
}
ExampleClass
和CustomSubclass
都在同一个包中,而Parent
作为依赖项来自GMF。
为什么会发生这种情况?我有其他插件项目与相同的设置,并有这不是情况和CustomSubclass
名称保留原样。但是我没有实现其他插件项目。
每当我用超类方法输入子类名时,超类就会自动导入,eclipse会用超类名纠正子类名。
Eclipse提供了这种代码气味(编译不会失败,但它更难阅读,有点慢,并且没有真正的好处,因为静态方法不能被覆盖):
- 警告/错误间接访问静态成员默认禁用
- 清理或/和保存操作成员访问>静态访问
这些默认值可以被覆盖以下项目特定设置(勾选Enable project specific setting复选框):
- 警告/错误:Project>属性:Java Compiler>错误/警告
- 清理:项目>属性:Java Code Style;清理
- 保存动作:项目>属性:Java Editor>拯救行动