为什么不鼓励间接访问静态成员?在Eclipse中,您可以在首选项> Java>编译器>错误/警告>"间接访问静态成员"下启用/禁用此警告.
"间接访问静态成员"配置为导致警告时的示例:
JLabel label = new JLabel();
label.setAlignmentX(JLabel.CENTER_ALIGNMENT); // causes warning
label.setAlignmentX(Component.CENTER_ALIGNMENT); // is ok
Run Code Online (Sandbox Code Playgroud)
Mar*_*nik 19
通过访问Component该类的成员JLabel给出了一个错误的印象,即该成员是特定的JLabel,实际上它是其Component成员,并恰好被其所有子类继承.Nothig通过宣布课程来访问它,并且肯定会有一些清晰的东西.
除了Marko Topolnik所说的,还有一个事实是,如果JLabel将来有一个同名的静态成员,那么仅仅重新编译JLabel.java就不会使调用代码意识到该模块中存在的常量.相反,直到重新编译代码,Component.CENTER_ALIGNMENT尽管源代码相反,它仍然会愉快地使用它.
后一个引用肯定会Component通过名称引用静态成员CENTER_ALIGNMENT,而前者将引用Component任一子类或任何子类中的成员,JLabel如果稍后在其中任何一个中重新定义名称.
在使用静态函数或成员变量的情况下,如果子类的更高版本也声明了重写,则即使不重新编译,间接访问的含义也会改变.所有这些可能都有点假设,但无论如何都要考虑好.
| 归档时间: |
|
| 查看次数: |
1156 次 |
| 最近记录: |