Что вы действительно хотите сделать, так это настроить управляемую событиями модель для запуска прослушивателя при возникновении события (в вашем случае, скажем, значение переменной изменилось). Это очень распространено не только для Java, но и для других языков программирования, особенно в контексте программирования пользовательского интерфейса (хотя это не обязательно только для этого)
Обычно это делается с помощью следующих шагов:
- Решите интерфейс, который слушатель должен реализовать в случае, если событие запущено. Для вашего случая вы можете назвать его VariableChangeListener и определить интерфейс как:
public interface VariableChangeListener {
public void onVariableChanged(Object... variableThatHasChanged);
}
Вы можете привести любой аргумент, который, по вашему мнению, важно для слушателя обработать здесь. Абстрагируясь в интерфейс, вы получаете гибкость в реализации необходимых действий в случае изменения переменной без жесткой связи с классом, в котором происходит событие. * * 1010
- В классе, где произошло событие (опять же в вашем случае, в классе, где переменная может измениться), добавьте метод для регистрации прослушивателя для события. Если вы вызываете ваш интерфейс VariableChangeListener, у вас будет такой метод, как
// while I only provide an example with one listener in this method, in many cases
// you could have a List of Listeners which get triggered in order as the event
// occurres
public void setVariableChangeListener(VariableChangeListener variableChangeListener) {
this.variableChangeListener = variableChangeListener;
}
По умолчанию никто не слушает событие
- В случае возникновения события (переменная изменилась), вы затем запустите слушатель, код будет выглядеть примерно так:
if( variableValue != previousValue && this.variableChangeListener != null) {
// call the listener here, note that we don't want to a strong coupling
// between the listener and where the event is occurring. With this pattern
// the code has the flexibility of assigning the listener
this.variableChangeListener.onVariableChanged(variableValue);
}
Опять же, это очень распространенная практика в программировании, которая в основном реагирует на событие или изменение переменной. В Javascript вы видите, что это является частью onclick (), в Android вы можете проверить модель, управляемую событиями, для различных слушателей, таких как OnClickListener , установленный для события Button onclick. В вашем случае вы просто запустите слушатель на основе другого события, которое происходит всякий раз, когда переменная изменилась