public class Main{
.
.
.
Class class = new Class();
class.method(class.variableFromAnotherClass);
sysout(class.variableFromAnotherClass)
}
public class Class{
Int variableFromAnotherClass=0;
method(int var){
var=1;
}
}
输出:
0
我正在处理类似于上述情况的情况,除了我的版本" Class"中有更多变量。我的问题是" Class"对传递的变量没有任何作用。为什么会这样?是因为传递的变量已经属于该类吗?有关如何解决此问题的建议?
答案 0 :(得分:1)
您遇到的问题与Java通过引用传递变量有关,而不是 value 。将variableFromAnotherClass
传递到class.method(int var)
时,int var
变量是从variableFromAnotherClass
的副本创建的。因此,当调用var=1
时,它会更新variableFromAnotherClass
的副本,而不是variableFromAnotherClass
本身的副本。
如果您希望能够从variableFromAnotherClass
更改Main
,则可以撰写class.variableFromAnotherClass=1;
而不是致电method
。
另一种更专业的更新变量的方法是使用getter和setter:
public class Class {
int variableFromAnotherClass;
public void getVar() {
return variableFromAnotherClass;
}
public int setVar(int var) {
this.variableFromAnotherClass = var;
}
}
答案 1 :(得分:0)
请同时使方法和变量静态
public class Class{
static Int variableFromAnotherClass=0;
static method(int var){
var=1;
}
}
答案 2 :(得分:0)
尝试使用java getter和setter,并将另一个类的实例变量设为private,这将添加封装。