java命名空间冲突

and*_*dge 1 java scope namespaces

我发现自己经常犯以下错误.

public class Foo{

  Bar bar;

  public void doSomething(){
    Bar bar = makeNewBar();
    // bla bla
  }

}
Run Code Online (Sandbox Code Playgroud)

错误在于我想设置Foo的栏,而不是本地栏.即,我应该说bar = makeNewBar(),不是Bar bar = makeNewBar().是否有编译器警告标志或可以检测到"命名空间冲突"的东西?如果不是,那么避免这种情况的好方法是什么(没有犯错误,这显然是最好的选择= p)?

Den*_*ret 5

这不是编译器的工作,但是如果您隐藏变量,大多数IDE会使用正确的设置警告您.

使用Eclipse,转到Preferences / Java / Compiler / Error/Warnings并寻找Name shadowing and conflicts.