我写了一小段代码:
System out = null;
out.out.println("Hello");
Run Code Online (Sandbox Code Playgroud)
这工作正常,并在控制台上打印"Hello".
现在在我的程序或我的范围中,有两个具有名称的对象out.一个是对象,System另一个是对象PrintStream.
为什么我没有收到编译器错误/运行时错误Duplicate local variable out.?
我在这里错过了什么?
没有,只是命名一个对象out,该System型局部变量.另一个是命名的out.out,它不是直接"在你的范围内".
没有理由导致编译时错误.
(顺便说一下,通过null引用调用静态方法/引用静态字段并不是一个很好的实践,它非常令人困惑.)