捕获分配给变量的新值可以通过以下方法实现:
class Variable {
private int value;
private List observers = new ArrayList<>();
public void setValue(int newValue) {
value = newValue;
notifyObservers();
}
public int getValue() {
return value;
}
public void addObserver(Observer observer) {
observers.add(observer);
}
public void removeObserver(Observer observer) {
observers.remove(observer);
}
private void notifyObservers() {
for (Observer observer : observers) {
observer.update(value);
}
}
}
interface Observer {
void update(int newValue);
}
class ExampleObserver implements Observer {
@Override
public void update(int newValue) {
// 处理新值的逻辑
}
}
public class Main {
public static void main(String[] args) {
Variable variable = new Variable();
variable.addObserver(new ExampleObserver());
// 设置变量的新值
variable.setValue(10);
}
}
class Variable {
private int value;
private VariableObserver observer;
public void setValue(int newValue) {
if (observer != null) {
observer.beforeUpdate(value, newValue);
}
value = newValue;
if (observer != null) {
observer.afterUpdate(value);
}
}
public int getValue() {
return value;
}
public void setObserver(VariableObserver observer) {
this.observer = observer;
}
}
interface VariableObserver {
void beforeUpdate(int oldValue, int newValue);
void afterUpdate(int newValue);
}
class ExampleObserver implements VariableObserver {
@Override
public void beforeUpdate(int oldValue, int newValue) {
// 处理新值之前的逻辑
}
@Override
public void afterUpdate(int newValue) {
// 处理新值之后的逻辑
}
}
public class Main {
public static void main(String[] args) {
Variable variable = new Variable();
variable.setObserver(new ExampleObserver());
// 设置变量的新值
variable.setValue(10);
}
}
以上是两种常用的解决方法,可以根据具体的需求选择适合的方式。
下一篇:捕获分支的输出而不打印到控制台