Bonjour à tous,
Je fais face au problème suivant:
Soit une classe B héritant d'une classe A.
L'exemple suivant "compile":
Par contre, l'exemple suivant ne compile pas:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 void test(){ B b = new B(); tester(b); } tester(A a){ }
Logique puisque B hérite de A mais ArrayList<B> n'hérite pas pour autant d'ArrayList<A>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 void test(){ List<B> listeb = new ArrayList<B>(); tester(listeb ); } void tester(List<A> listeA){ }
Du coup mon approche à été la suivante:
La tout marche, la méthode tester est spécifiée comme prennant en paramètre une liste d'instance de la classe G, héritant de A. Cependant, quid des perfs, une approche aussi générique peut-elle avoir une incidance sur les performance (il s'agit de code très appellé et donc très critique en terme de performances).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 void test(){ List<B> listeb = new ArrayList<B>(); tester(listeb ); } void <G extends A>tester(List<G> listeG){ }
Qui plus est je rajoute même une couche d'héritage, mon pattern de code étant similaire à:
Cordialement,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 class Matching<T>{ ... void <G extends T>tester(List<G> listeG, List<Matching<T>> listeMatching) }
Benoît.
Partager