所以我正在创建一个在特定事件发生时执行操作的类。基本上,变量变为不同的值。我需要做的是从构造函数内部存储对该对象的引用。以下是我正在使用的代码,以便为每个人提供更好的图片:
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
/**
* Created by iJason on 8/26/2016.
*/
class ClickListener implements ActionListener {
JLabel label;
public void actionPerformed(ActionEvent event) {
label.setText("I was clicked.");
}
public ClickListener(JLabel label) {
this.label = label;
}
}
每当" actionPerformed"方法被调用,我想要"标签"这是传递给构造函数实际更改。所以我需要从构造函数设置它的引用,但我不知道如何在Java中这样做。提前感谢您的帮助!
答案 0 :(得分:3)
Java使用pass by value。但是对于对象,传递的值是对实际对象的引用。这意味着传递给构造函数的标签文本将会更改。简而言之,你的代码已经做了你想要的。
答案 1 :(得分:2)
Java总是按值传递。它永远不会通过引用传递。 请参阅正确的解释,其中解释了上述声明here。
在您的示例中,
public ClickListener(JLabel label) {
this.label = label;
}
实际上,值(即JLabel的实例)被传递给构造函数方法,在该方法中,它被赋值给类ClickListener的成员变量(即引用)。因此,变量ClickListener.label引用了传递的对象。因此,通过ClickListener.label引用变量所做的任何修改都将反映在原始对象中,直到为其分配了新的对象实例。