2013-11-13 7 views
1

У меня есть attibute в классе Java, и мне нужен метод в том же классе, который будет вызываться, когда атрибут в классе Java изменит его значение. Как я могу это сделать?Необходимый метод для вызова при изменении атрибута

boolean setInstallMode = false; 

public void callMeWhenChanged() { 

    some actions . . . 

} 

ответ

3

сделать setInstallMode частные, то только установить его с помощью метода сеттера.

private boolean installMode = false; 

public void setInstallMode(boolean mode) 
{ 
    installMode = mode; 
    callMeWhenChanged(); 
} 

public void callMeWhenChanged() { 

    some actions . . . 

} 
+0

есть ли способ добавить слушателя или обработчика? – user840930

+0

@ user840930 Я уверен, что вы можете найти какое-то запутанное решение для прыжков, но что в этом плохого? Это просто, элегантно, и это очень похоже на Java. Обычно в java мы не раскрываем наши внутренние поля для непосредственной манипуляции. Мы используем геттеры и сеттеры, чтобы это было легко. Он позволяет вам контролировать свой объект и обеспечивать его согласованность. Класс должен всегда работать самостоятельно. Если вы можете сломать объект из-за пределов своего класса (запрет на отражение), вам нужно еще больше пуленепробивать. – Cruncher

1

Вы можете сделать атрибут частный затем метод SetAttribute для этого атрибута, а затем вызвать callMeWhenChanged в этом методе набор атрибутов

private boolean installMode 

public void setInstallMode(boolean o){ 
    this.installMode = o; 
    callMeWhenChanged() 
    //WhateverElse 
} 
0
private boolean setInstallMode = false; // Make attribute as private field 

public void setInstallMode(boolean inBooleanValue){ // write public mutator for this attribute 
    this.setInstallMode =inBooleanValue; // update value 

    callMeWhenChanged();// Call your logic 
    } 


public void callMeWhenChanged() { 

    some actions . . . 

} 
Смежные вопросы