当您编写无法访问的代码时,Java 编译器会报错。例如
public void go()
{
return;
System.out.println("unreachable");
}
但是,当您在无法从任何地方访问的匿名类中定义新方法时,编译器不会抱怨。它允许你这样做,为什么?例如,
class A
{
public void go()
{
System.out.println("reachable - A");
}
}
class B
{
public static void main(String [] args)
{
A a = new A() {
public void go()
{
System.out.println("reachable - B");
}
public void foo()
{
System.out.println("unreachable - B");
}
};
a.go(); // valid
a.foo(); // invalid, compiler error
}
}