Je vais essayer d'expliquer mon problème le plus clairement possible :). J'utilise PropertyChangeSupport pour notifier les vues enregistrées pour les changements dans les propriétés. L'une des propriétés est un objet dont les propriétés sont modifiées à chaque vue secondes. Je ne veux pas créer pour cet objet particulier une nouvelle instance à chaque fois qu'il est mis à jour (pour que le propriétaire de la propriété remarque le changement), j'ai donc écrit ma propre méthode d'égal à égal où je me suis comparé à lui-même.PropertyChangeSupport et équivaut à la méthode
@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;
}
Malheureusement, cela n'a pas eu l'effet que je recherchais. Si je crée une copie de l'objet et déclenche la méthode de changement de propriété, alors cela fonctionne bien.
Qu'est-ce qui me manque ici?
- Modifier
je me suis aperçu que depuis que je suis en utilisant la même instance et non une copie de celui-ci, les propriétés sont pointig au même endroit, donc le comparation serait toujours sortir vrai. Y at-il une solution de contournement à cela (en plus de créer une copie). Ou quelle est la difficulté de créer une copie d'un objet chaque seconde, par exemple.
Cela ne devrait pas d'importance puisque toute modification de la même instance devrait déclencher des événements à tous les auditeurs de cette instance. Vous omettez des informations vitales ici. –