передать переменную экземпляра в качестве параметра в методе в том же классе? - PullRequest
3 голосов
/ 25 февраля 2012

Можно ли передать переменную экземпляра в качестве параметра методу в пределах одного и того же класса?

см. Код ниже:

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;
   }

}

Использовано в этом примере, это кажется глупымпотому что вы можете легко изменить var1 с помощью первого вызова метода changeVar (), но у меня есть более сложная программа, в которой у меня есть несколько переменных экземпляра (var1, var2, var3, var4 ... var10).Я пытаюсь написать changeVariable () один раз и передать каждую переменную экземпляра в зависимости от того, что необходимо изменить, в отличие от написания отдельного метода для каждой переменной экземпляра, которая должна быть изменена, т.е. changeVariable1, changeVariable2 ... changeVariable10.

Ответы [ 2 ]

0 голосов
/ 25 февраля 2012

Это не так, как работает Java; Вы можете изменить свойство объекта, на который ссылается параметр, но не значение самого параметра. Вы можете рассмотреть другой подход, если это вам нужно, возможно, карту, на которую можно ссылаться по имени.

(Технически вы можете передать имя свойства в виде строки и использовать отражение, но, пожалуйста, не надо.)

0 голосов
/ 25 февраля 2012

Это не просто глупо - это не сработает.Аргументы в Java всегда передаются по значению.Так что ваш changeVariable метод на самом деле просто не работает ... он изменяет значение параметра , но это не имеет значения на var1.

Без более конкретнойНапример, трудно понять, является ли это хорошей идеей вообще - я подозреваю, что это не так - но способ, которым вы пытаетесь это сделать определенно не сработает.

...