我正在尝试在我的代码中使用observable,这个问题让我很难过。
public class observeState extends Observable
{
public void setSelectedTransaction(int idx)
{
if (selectedTransaction != idx)
{
this.selectedTransaction = idx;
setChanged();
notifyObservers("setSelectedTransaction");
System.out.println("Observers : "+this.countObservers());
}
}
public void setLog(Log log)
{
if(theLog != log) {
theLog = log;
System.out.println(theLog.getLogTransactions().size() + "setLog");
setChanged();
notifyObservers("setLog");
System.out.println("Observers : "+this.countObservers());
}
}
有两个观察者观察这个可观察的类,当使用测试行“Observers:2”调用notifyObservers
方法时,它会发出setSelectedTransaction
。然而,下一个方法setLog
似乎没有观察者给出“观察者:0”。我不认为我只能使用一次可观察的方法。
答案 0 :(得分:2)
此问题的最主要原因是您没有在同一对象上调用该方法。假设两个对象相同是因为它们具有相同的名称或其他混淆,这是一个常见的错误。我会打印出每个对象的hashCode,或使用调试器来确保你真正调用同一个对象。
顺便说一下,您可以尝试以相反的顺序拨打电话,或者不止一次 测试你的理论。
答案 1 :(得分:0)
您用来调用setSelectedTransaction
和setLog
的对象是不同,或者观察者可能正在删除< / strong>他们自己作为更新方法中的观察者。