私はEclipseアプリケーションに次のコードを持っています:
import org.eclipse.swt.widgets.Listener;
public class X {
public void test() {
Listener eclipseListener = new Listener() {
public void handleEvent(Event evt) {
System.err.println("starting");
Y.externalMethod();
System.err.println("finished");
}
}
}
public class Y {
public static void externalMethod() {
System.err.println("in class Y");
}
}
クラス X でメソッド テストを実行すると、次の出力が得られます。
起動
クラス Y で externalMethod が実行されなかった理由と、制御がクラス X に戻されなかった理由がわかりません (「終了」または「クラス Y 内」とは出力されません)。
externalMethod が実行されない理由についてのアイデアはありますか? 匿名の内部クラスは、クラス外で静的メソッドを呼び出すことを許可されていませんか? もしそうなら、なぜこのコードはコンパイルされるのですか?