我发现自己经常犯下以下错误。
public class Foo{
Bar bar;
public void doSomething(){
Bar bar = makeNewBar();
// bla bla
}
}
错误在于我想要设置Foo的栏,而不是本地栏。我应该说bar = makeNewBar()
,而不是Bar bar = makeNewBar()
。是否有编译器警告标志或可以检测到“命名空间冲突”的东西?如果不是,那么避免这种情况的好方法是什么(不做错误,这显然是最好的选择= p)?
答案 0 :(得分:5)
这不是编译器的工作,但是如果您隐藏变量,大多数IDE会使用正确的设置警告您。
使用Eclipse,转到Preferences / Java / Compiler / Error/Warnings
并查找Name shadowing and conflicts
。
答案 1 :(得分:2)
你不能使用
this.bar = makeNewBar();
(对于班级的读者来说,这也不会让人感到困惑..)
<小时/>
(OR)
此URL显示可以配置Eclipse以警告隐藏类成员的声明:
请参阅“字段声明隐藏另一个字段或变量”部分
该文档声明此警告默认(在ECLIPSE中)为IGNORE,因此您必须明确设置此警告。