这应该非常简单,但是我无法使它正常工作。
//decreases the temperature automatically over time
Heating heating = new Heating(25);
//SHOULD watch when the temp drops below a threshold
Observer watcher = new Watcher();
heating.addObserver(watcher);
加热有
public void turnOn()
和
public void turnOff()
达到阈值时,将某些内容打印到sysout没问题
class Watcher implements Observer {
private static final int BOTTOM_TEMP = 23;
@Override
public void update(Observable o, Object arg) {
double temp = Double.parseDouble(arg.toString());
if (temp < BOTTOM_TEMP) {
//System.out.println("This works! The temperature is " + temp);
o.turnOn(); //doesn't work
heater.turnOn(); //doesn't work either
}
}
}
因此,简而言之:如何从观察者内部调用可观察对象的turnOn()方法?上述尝试导致“方法未定义”和“无法解决加热”。
方法是公开的,对象存在并且观察者已注册。
我想念什么?
最佳答案
您需要将Observable
强制转换为Heating
才能调用属于Heating
对象的方法。像这样:
if (temp < BOTTOM_TEMP) {
//System.out.println("This works! The temperature is " + temp);
if (o instanceof Heating){
((Heating)o).turnOn();
}
}