编写无法访问的代码时,Java编译器会抱怨.例如
public void go()
{
return;
System.out.println("unreachable");
}
Run Code Online (Sandbox Code Playgroud)
但是,当您在匿名类中定义一个无法从任何地方访问的新方法时,编译器不会抱怨.它允许你这样做,为什么?例如,
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
}
}
Run Code Online (Sandbox Code Playgroud)