【发布时间】:2013-02-04 22:27:20
【问题描述】:
我在 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 类中运行方法测试时,我得到以下输出:
开始
我不明白为什么 externalMethod 没有在 Y 类中运行以及为什么控制没有返回到 X 类(它从不打印“完成”或“在 Y 类中”)。
关于为什么 externalMethod 不运行的任何想法?匿名内部类是否不允许在其类外调用静态方法?如果是这样,为什么这段代码会编译?
【问题讨论】:
-
如果您只添加
eclipseListener.handleEvent(null);并运行它,您发布的内容就可以正常工作。你能生成一个 SCCE 吗?很可能在过程中发现实际问题。
标签: java eclipse anonymous-inner-class