这是因为在go() 方法中创建了A类的实例之后,"inner"版本的A类声明出现了。
class A {
void m() {
System.out.println("outer");
}
}
public class MethodLocalVSInner {
public static void main(String[] args) {
new MethodLocalVSInner().go();
}
void go() {
new A().m();
class A {
void m() {
System.out.println("inner");
}
}
}
class A {
void m() {
System.out.println("middle");
}
}
}
A
重命名为B
,您将获得outer
输出。这应该会给你一些提示。 - MarounThe type A is never used locally
,这意味着在方法go
中定义的局部类A
从未被使用。 - Not a bug