J'ai créé une interface Observer générique et une classe Observable, mais je ne peux pas compiler ma classe en raison de problèmes génériques. Je ne sais pas précisément pourquoi ce que j'essaie de faire est interdit. Le code suivant:Problème avec le modèle Observateur et les génériques en Java
public class Observable<U> {
private List<Observer<Observable<U>, U>> _observers =
new ArrayList<Observer<Observable<U>, U>>();
public void addObserver(Observer<? extends Observable<U>, U> obs) {
if (obs == null) {
throw new IllegalArgumentException();
}
if (_observers.contains(obs)) {
return;
}
_observers.add(obs); // This line does not compile
}
public void notifyObservers(U data) {
for (Observer<? extends Observable<U>, U> obs : _observers) {
// After correction of the list declaration, this line will not compile
obs.update(this, data);
}
}
}
interface Observer<T, U> {
public void update(T entity, U arg);
}
Pouvez-vous fournir le (s) message (s) d'erreur spécifique (s) que vous obtenez? –
Après avoir corrigé la déclaration de la liste: A partir de Eclipse: La méthode atualizar (capture # 4-of? Extends Observable , U) dans le type Observateur, U> ne s'applique pas aux arguments (Observable , U) –
Remplacer "atualizar" par "update" dans mon commentaire précédent. –