gpt4 book ai didi

Java内联接口(interface)实现、变量和方法调用

转载 作者:行者123 更新时间:2023-12-01 12:01:07 25 4
gpt4 key购买 nike

在Java中,为什么我可以这样做

new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent evt) {
screenClosed();
}
}

// ...

public void screenClosed() {
running = false;
}

但不是

new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent evt) {
running = false;
}
}

最佳答案

我猜测 running 是一个局部变量,而不是第二个示例中的字段,您必须使用 screenClosed 方法将其设为一个字段才能使这行得通?从您的代码示例中很难看出。

如果是这样:内部类(例如本地类或匿名类)要求将(本地)变量标记为final(它们是常量)。这是由于编译器构造类的方式是通过将变量作为参数传递给编译器创建的构造函数,然后将其存储为编译器生成的类中的字段。

您可以通过将局部变量声明为来绕过此限制:

final boolean[] running = new boolean[]{true};

然后设置running[0] = false

关于Java内联接口(interface)实现、变量和方法调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27973391/

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