gpt4 book ai didi

Java匿名内部类调用静态方法

转载 作者:太空宇宙 更新时间:2023-11-04 07:49:40 25 4
gpt4 key购买 nike

我在 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 中运行方法测试时,我得到以下输出:

starting

我不明白为什么 externalMethod 没有在 Y 类中运行,以及为什么控制没有返回到 X 类(它从不打印“完成”或“在 Y 类中”)。

关于为什么 externalMethod 不运行有什么想法吗?匿名内部类是否不允许在其类之外调用静态方法?如果是这样,为什么这段代码可以编译?

最佳答案

而不是

    public void handleEvent(Event evt) {
System.err.println("starting");
Y.externalMethod();
System.err.println("finished");
}

你可能会有更好的运气:

    public void handleEvent(Event evt) {
System.err.println("starting handleEvent");
try {
Y.externalMethod();
} finally {
System.err.println("finished handleEvent");
}
}

也就是说,

  1. 将方法退出跟踪放在finally
  2. 将方法名称添加到跟踪行

关于Java匿名内部类调用静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14696903/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com