我在Eclipse應用程序下面的代碼:的Java匿名內部類中調用靜態方法
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上運行的方法測試,我得到以下的輸出:
起始
我不明白爲什麼externalMethod沒有ru n在類Y中,爲什麼控制沒有返回到類X(它從不打印'完成'或'在類Y'中)。
有關爲什麼externalMethod無法運行的任何想法?匿名內部類是不允許在其類之外調用靜態方法的嗎?如果是這樣,爲什麼這個代碼編譯?
如果您只是添加'eclipseListener.handleEvent(null)'並運行它,您發佈的內容就可以正常工作。你能生成一個SCCE嗎?可以很好地找到這個過程中的實際問題。 – Affe