我正在“玩”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
等于它。
答案 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中分配您想要的值,在这种情况下您将获得对该变量的“获取”访问权