我會盡可能地解釋我的問題:)。我正在使用PropertyChangeSupport來通知已註冊的視圖中的屬性更改。其中一個屬性是屬性每隔幾秒鐘更改一次的對象。我不想在每次更新時爲這個特定的對象創建新的實例(propertychangelistener注意到這個改變),所以我寫了我自己的equals方法,在這裏我省略了自己的比較。PropertyChangeSupport並等於方法
@Override
public boolean equals(Object item) {
// do not compare
// if (this == item) { return true; }
if (!(item instanceof TransferQueueItem) ||
item == null) {
return false;
}
TransferQueueItem newItem = (TransferQueueItem) item;
boolean value =
// ommited... properties comparation
return value;
}
不幸的是,這並沒有我正在尋找的效果。如果我創建了該對象的副本並激活其上的屬性更改方法,那麼它工作正常。
我在這裏錯過了什麼?
- 編輯
我意識到,因爲我使用的是相同的實例,而不是它的一個副本,該屬性pointig相同的地方,因此比較 - 總是會出來真。是否有解決方法(除了創建副本)。或者每秒創建一個對象的副本有多糟糕,例如。
這不應該因爲任何改變同一個實例關係應該將事件發送給該實例的所有聽衆。你在這裏省略了一些重要的信息。 – 2009-10-22 08:53:06