如何从Java中的另一个类获取一些变量?

时间:2013-12-31 23:28:24

标签: java

我正在“玩”Java,观看教程并试图掌握它。对于这个问题,我试图找出如何从另一个类中获取变量并在我的主类中使用它,而不将公共初始变量。这是代码:

我试图让int x等于5(如setNum()方法中所示),但是当它打印时它会给我0。

主类:

package getVarTest;

public class Main { 
    public static void main (String[]args){
        Vars varsObject = new Vars();
        int x = varsObject.getNum();
        System.out.println(x);
    }
}

变量类:

package getVarTest;

    public class Vars {
        private int num;
            public void setNum(int x){
                this.num = 5;
            }
            public int getNum(){
                return num;
            }
    }

所以,正如您所看到的,我正在尝试使用private int num并使主要类中的int x等于它。

6 个答案:

答案 0 :(得分:5)

  

我试图让int x等于5(如setNum()方法中所示)但是当它打印出来时它会给我0。

要运行setNum中的代码,您必须调用它。如果您不调用它,则默认值为0

答案 1 :(得分:3)

您永远不会致电varsObject.setNum();

答案 2 :(得分:2)

这样做! setNum(num);//fix- until someone fixes your setter. Your getter should not call your setter with the uninitialized value of {NUM {1}} 0`)。

我建议做一些小改动 -

(e.g.

答案 3 :(得分:1)

如果变量是公共的,你可以通过说packageName.ClassName.variableName得到它,但如果它是私有的,你将不得不在变量所在的类中创建一个getter方法。它看起来像这样:

public int getVariableName() {
    return variableName;
}

然后只需在任何需要的地方调用该方法。

答案 4 :(得分:0)

你的榜样很完美:这个领域是私人的,它有一个吸气剂。这是访问字段的常规方法。 如果需要直接访问对象字段,请使用反射。使用反射来获取字段的值是一种破解,应该在极端情况下使用,例如使用不能更改其代码的库。

答案 5 :(得分:0)

您拥有的代码是正确的。要从另一个类获取变量,如果变量不是静态的,则需要创建该类的实例,并且只需调用显式方法即可访问该变量。如果你把get和set方法放在上面就像声明变量public一样。

将方法setNum设为私有,并在getNum中分配您想要的值,在这种情况下您将获得对该变量的“获取”访问权