到達できないコードを記述すると、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
}
}