【问题标题】:Storing a reference to an object from inside another class in Java?从Java中的另一个类中存储对对象的引用?
【发布时间】:2016-08-27 16:48:32
【问题描述】:

所以我正在创建一个在特定事件发生时执行操作的类。基本上,变量被更改为不同的值。我需要做的是从构造函数内部存储对该对象的引用。这是我正在使用的代码,目的是让每个人都能更好地了解情况:

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 中做到这一点。提前感谢所有帮助!

【问题讨论】:

    标签: java constructor reference


    【解决方案1】:

    Java 使用按值传递。但在对象的情况下,传递的值是对实际对象的引用。这意味着传递给构造函数的标签文本将会改变。长话短说,你的代码已经做了你想做的事。

    【讨论】:

      【解决方案2】:

      Java 总是按值传递。它永远不会通过引用传递。 请参考正确的解释,以示例here解释上述语句。

      在你的例子中,

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

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

      【讨论】:

        猜你喜欢
        • 2020-05-24
        • 1970-01-01
        • 1970-01-01
        • 2013-02-18
        • 1970-01-01
        • 2017-04-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多