gpt4 book ai didi

java - 为什么 ActionListener 可以访问类的私有(private)变量?

转载 作者:搜寻专家 更新时间:2023-11-01 03:20:23 25 4
gpt4 key购买 nike

您好,我是 Java 的新手,我有以下问题(我已经搜索过论坛,但我还不明白):

为什么可以像这样从 actionlistener 访问私有(private)类变量:

public class Test{
private int x;

Test(){
init();
}

....

public void init(){

....
Button button_1 = new Button("buttonTest");
button_1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
x++;
}
});

}

}

为什么我不能将之前的代码片段(创建按钮 + Action 监听器)正确无误地放入构造函数(“x 无法解析”)?

问候

最佳答案

与其编写 x++;,不如尝试使用 Test.this.x++;

问题是您正试图从匿名内部类访问数据成员。如果您编写 x++;,那么它将引用 actionPerformed(ActionEvent arg0) 方法中不存在的局部变量。因此,要引用类的数据成员,您必须使用 this 但由于您使用的是匿名内部类,因此您还必须告诉类名,因此它变为 Test.this.x++;.

关于java - 为什么 ActionListener 可以访问类的私有(private)变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32175886/

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