到達不能なコードを記述すると、Javaコンパイラがエラーを発する。たとえば、java匿名の内部クラス到達不能コード
ただし、どこからでもアクセスできない匿名クラスに新しいメソッドを定義すると、コンパイラは不平を言っていません。それはあなたがそれを可能にします、なぜですか?原則として 例えば、
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
}
}
匿名の内部クラスの宣言を終了するには、 'new A 'の後にカッコ'() 'と中括弧'};がありません。 – Jesper
サンプルコードはまったくコンパイルされません。正してください。 – PeterMmm
私はそれをB.javaファイルにコピーし、a.foo()という行にコメントを付けてコンパイルして実行しました。申し訳ありませんが、コンパイルエラーの原因となることが既に述べられているa.foo()の部分を除いて、コードにエラーはありませんでした。 – kioto