将实例变量作为参数传递给同一个类中的方法?

时间:2012-02-25 17:47:57

标签: java pass-by-reference

是否可以将实例变量作为参数传递给同一个类中的方法?

请参阅以下代码:

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。

2 个答案:

答案 0 :(得分:0)

这不仅仅是愚蠢 - 它不会起作用。 Java中的参数始终按值传递。因此,您的changeVariable方法实际上只是一个无操作...它会更改参数的值,但这对var1没有任何影响。

如果没有一个更具体的例子,很难知道这是否是一个好主意 - 我怀疑它不是 - 但你尝试它的方式绝对将无效。

答案 1 :(得分:0)

这不是Java的工作原理;您可以更改参数引用的对象的属性,但不能更改参数本身的值。如果您需要,可能需要考虑不同的方法,也许是可以通过名称引用的地图。

(从技术上讲,你可以将属性的名称作为字符串传递并使用反射,但请不要。)