Bonjour,
J'ai un petit problème suite à l'utilisation (abusive) de méthodes génériques pour factoriser du code.
Je cherche en fait à instancier un objet au sein d'une méthode générique de la manière suivante :
avec la classe B héritant de la classe A
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 private <T extends A> T instanciationSelective(boolean classeA) { T unObjet = null; if (classeA) unObjet = new A(); else unObjet = new B(); return unObjet }
évidemment je vous le donne en mille, le compilo n'arrive pas à piger que unObjet est une instance de A ou de ses sous-classes et me sort deux bonnes grosses erreurs "incompatibles types" (found A required T et found B required T).
si je caste à l'instanciation, là j'ai le droit à l'habituel warning "unchecked cast".
Comment se sortir de là sans erreur ni warning? Pourquoi dans les méthodes génériques la substitution n'est pas faite (alors que dans une classe générique, tout objet de type T aurait accès aux méthodes définies dans A)?
Merci
++
Partager