是否可以将实例变量作为参数传递给同一个类中的方法?
请参阅以下代码:
public class Example
{
private int var1; //instance variable to be changed
public Example()
{
var1 = 0;
}
public void changeVar()
{
this.changeVar1(var1); //call method to change from within class
}
private void changeVariable(int variable) //changes passed instance variable
{
variable = 2;
}
}
在这个例子中使用,看起来很愚蠢,因为你可以通过第一个方法调用,changeVar()轻松地改变var1,但是我有一个更复杂的程序,其中我有多个实例变量(var1,var2,var3,var4 .. 。var10)。我试图编写一次changeVariable()并根据需要更改的内容传递每个实例变量,而不是为需要更改的每个实例变量编写单独的方法,即changeVariable1,changeVariable2 ... changeVariable10。
答案 0 :(得分:0)
这不仅仅是愚蠢 - 它不会起作用。 Java中的参数始终按值传递。因此,您的changeVariable
方法实际上只是一个无操作...它会更改参数的值,但这对var1
没有任何影响。
如果没有一个更具体的例子,很难知道这是否是一个好主意 - 我怀疑它不是 - 但你尝试它的方式绝对将无效。
答案 1 :(得分:0)
这不是Java的工作原理;您可以更改参数引用的对象的属性,但不能更改参数本身的值。如果您需要,可能需要考虑不同的方法,也许是可以通过名称引用的地图。
(从技术上讲,你可以将属性的名称作为字符串传递并使用反射,但请不要。)