2016-05-21 2 views
1

Я пытаюсь получить обновленное значение переменной из другого класса. Значение переменной обновляется, но только для собственного класса. В то время как другой класс, который пытается получить доступ к значениям через ссылку, все еще получает старое значение. Предположим, что есть private boolean переменная в class1, которая продолжает обновляться. Хотя class2 доступ к к boolean переменной class1 по getter method, что-то вроде этого:Как получить обновленное значение переменных java?

CLASS 1 CODE: 

class A { 
    private boolean state; 
    boolean getState() { 
     return state; 
    } 
} 

Здесь значение переменной state продолжает обновление с помощью ActionEvent

CLASS 2 CODE: 

class B { 
    void go() { 
     A a = new A(); 
     while(true) { 
      if(a.getState()) { 
       //CODE 
      } 
     } 
    } 
} 

Здесь я всегда получение исходное значение state переменная в class B, хотя значение обновляется в class A. Итак, как я могу получить обновленное значение переменной из другой ссылки на класс?

EDIT: Это любопытное странно, но обновления переменных, когда этот метод как-то называется или обновилась. Как это:

CLASS 2 CODE: 

class B { 
    void go() { 
     A a = new A(); 
     while(true) { 
      System.out.println(a.getState()); 
      if(a.getState()) { 
       //CODE 
      } 
     } 
    } 
} 

Сразу после добавления System.out.println(a.getState());, мы получаем обновленное значение. Пожалуйста, объясни!

ответ

2

Вы создаете новый экземпляр A на каждой итерации цикла. Просто переместите A a = новый A(); одна линия вверх:

class B { 
    void go() { 
     A a = new A(); 
     while(true) { 
      if(a.getState()) { 
       //CODE 
      } 
     } 
    } 
} 
+0

Это не помогло! –

+0

Итак, если вы используете именно этот код, вы должны установить значение по умолчанию для значения true. Потому что этот код никогда не достигает // CODE. private boolean state = true; –

+0

Пожалуйста, смотрите, я сделал редактирование в вопросе. С моей стороны, я не хочу, чтобы // CODE запускался, если 'state' не становится' true' 'ActionEvent' –

0

Вы можете использовать bollean в любом классе вы Juste нужно сделать его статическим

CLASS 1 CODE: 

class A { 
    private boolean state; 
     public static boolean getState() { 
      return state; 
    } 
} 

и во втором классе

CLASS 2 CODE: 

class B { 
    void go() { 
     while(true) { 
      if(A.getState == //true or false//) { 
       //CODE 
      } 
     } 
    } 
} 
Смежные вопросы