在Java中的另一个类中存储对象的引用?

时间:2016-08-27 16:48:33

标签: java constructor reference

所以我正在创建一个在特定事件发生时执行操作的类。基本上,变量变为不同的值。我需要做的是从构造函数内部存储对该对象的引用。以下是我正在使用的代码,以便为每个人提供更好的图片:

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中这样做。提前感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

Java使用pass by value。但是对于对象,传递的值是对实际对象的引用。这意味着传递给构造函数的标签文本将会更改。简而言之,你的代码已经做了你想要的。

答案 1 :(得分:2)

Java总是按值传递。它永远不会通过引用传递。 请参阅正确的解释,其中解释了上述声明here

在您的示例中,

public ClickListener(JLabel label) {
    this.label = label;
}

实际上,值(即JLabel的实例)被传递给构造函数方法,在该方法中,它被赋值给类ClickListener的成员变量(即引用)。因此,变量ClickListener.label引用了传递的对象。因此,通过ClickListener.label引用变量所做的任何修改都将反映在原始对象中,直到为其分配了新的对象实例