J'essaie d'implémenter un pattern Strategy + Factory en utilisant des génériques. Le but est de retourner à une classe client une implémentation de l'interface DocumentDao qui peut gérer un document de type T extends, donc j'ai plusieurs interfaces Dao qui étendent DocumentDao pour différents sous-types de Document.Java - Modèles d'usine et de stratégie avec des génériques
Voici mon code:
public class Document { ... }
public class DocumentA extends Document { ... }
public class DocumentB extends Document { ... }
public interface DocumentDao<T extends Document> {
public void update(T document);
}
public interface DocumentADao<DocumentA> {}
public interface DocumentDaoFactory {
public <T extends Document> DocumentDao<T> getDaoInstance(Class<T> clazz);
}
Ensuite, je tente d'utiliser l'usine:
private <T extends Document> void someMethod(T document) {
...
DocumentDao<T> documentDao = this.documentDaoFactory.getDaoInstance(document.getClass());
documentDao.update(document);
...
}
Mais les plaintes du compilateur au sujet de la getDaoInstance() appel:
Type mismatch: cannot convert from DocumentDao<? extends AbstractGDriveDocument<?>> to DocumentDao<T>
Comment pour faire face à cette situation? Comment puis-je obtenir une solution similaire?
Merci
Désolé pour la première erreur, c'était juste un oubli (dans mon vrai code c'était correct), donc je vais mettre à jour la question. Le deuxième point a résolu mon problème, merci beaucoup. – user1781028