如何从不同的类访问私有实例变量的值?

时间:2016-10-22 09:01:17

标签: java user-interface

我正在用Java创建一个简单的GUI游戏(数字猜测)。

显然,我有一个名为Give Up的按钮。

当我点击Give Up按钮时,我想在textarea上显示答案。

但是,targetNumber变量被声明为私有:

public class GameUtility {
    private String targetNumber = "2543";

    //rest of the code
}

class GiveUpButton implements ActionListener { //Inner class
    public void actionPerformed(ActionEvent gEvent) {

        GameUtility utility = new GameUtility();
        textArea.append(utility.targetNumber); //How to access the value of targetNumber?
    }
}

如何访问私有变量的值?

3 个答案:

答案 0 :(得分:2)

private修饰符表示您无权直接访问该属性。但也许更重要的是,private暗示您不应该直接访问该属性。创建getter以提供对外部类的访问:

public class GameUtility {
    private String targetNumber = "2543";

    public String getTargetNumber() {
        return targetNumber;
    }

    //rest of the code
}

class GiveUpButton implements ActionListener {
    public void actionPerformed(ActionEvent gEvent) {
        GameUtility utility = new GameUtility();
        textArea.append(utility.getTargetNumber());
    }
}

另请参阅:Java Documentation on Access Control

答案 1 :(得分:2)

要创建托管bean accessible的状态,您需要为该状态添加settergetter方法。

添加了setter和getter(访问器)方法后,您可以更新并访问private实例的值。代码应如下所示:

public class AccessorExample {
    private String attribute;

    public String getAttribute() {
        return attribute;
    }

    public void setAttribute(String attribute) {
        this.attribute = attribute;
    }
}

让我们从之外的访问private实例中的信息,只有当他们通过提供的机制询问时我们才会调用方法。要求对象显示有关自身信息的机制我们可以调用getter方法(例如accessorExample.getAttribute();)。

答案 2 :(得分:1)

推荐的方法是创建适当的GettersSetters

enter image description here

public class AccessorExample {
    private String attribute;

    public String getAttribute() {
        return attribute;
    }

    public void setAttribute(String attribute) {
        this.attribute = attribute;
    }
}

大多数IDE都支持直接生成getterssetters

  1. See this post to get more insights as how do getters and setters work?
  2. Generate Getters and setters in Netbeans.