Bonjour,
J'ai toujours compris par : List<?extends B> list que list acceptera des elements de type héritant de B. (On descends dans l'arbre des classes)
Et List<? super B> list que list acceptera des elements de type dont B hérite (On remonte dans l'arbre des classes).
Alors pourquoi ce qui suit ne compile pas??
D'autre part à quoi ca sert de définir <? extends B> puisque le polymorphisme permet deja cela.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 class A{} class B extends A{} class C extends B{} public class Test { public static void main(String[] args) { List<? extends B> list = new ArrayList<B>(); list.add(new B()); list.add(new C()); List<? super B> list1 = new ArrayList<A>(); list.add(new B()); list.add(new A()); } }
A l'aide








Répondre avec citation






Partager