Есть ли способ получить доступ к переменным вызывающего класса в методе? - PullRequest
2 голосов
/ 22 февраля 2012

В настоящее время у меня есть класс, который вызывает статический метод другого класса. Однако я пытаюсь, чтобы статический метод изменил переменную вызывающего класса, это возможно?

Пример кода:

public class exClass {
    private int aVariable;

    public exClass() {
        othClass.aMethod();
    }
}

public class othClass {

    static void aMethod() {
        // stuff happens, preferably stuff that
        // allows me to change exClass.aVariable
    }
}​

Итак, я хотел бы знать, есть ли способ получить доступ к переменной экземпляра exClass, который вызывает othClass. Очевидно, кроме использования оператора return.

Ответы [ 3 ]

5 голосов
/ 22 февраля 2012

Нет, если aClass не предоставляет эту переменную. Вот что такое инкапсуляция и сокрытие информации: если разработчик класса делает переменную приватной, то только компонент, которому она принадлежит, может изменять или получать к ней доступ.

Конечно, маленький грязный секрет в Java заключается в том, что рефлексия может обойти вас при любых личных ограничениях.

Но вы не должны прибегать к этому. Вы должны правильно оформлять свои классы и уважать замыслы других.

3 голосов
/ 22 февраля 2012

Вы можете передать this в качестве параметра второй функции.

public class exClass {
   public int aVariable;

   public exClass()
   {
      othClass.aMethod(this);
   }
}

public class othClass{

   static void aMethod(exClass x)
   {
      x.aVariable = 0; //or call a setter if you want to keep the member private
   }
}
0 голосов
/ 22 февраля 2012

вы должны дать статическому методу в othClass экземпляр exClass, например othClass.aMethod (this), затем вы можете изменить переменную этого экземпляра или сделать переменную статической, если вам не нужен экземпляр

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...