Salut,
Quelqu'un pourrait-il m'expliquer pourquoi m2 ne compile pas alors que m3 compile...?
(que ça soit avec eclipse ou avec javac)
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
22 public class TestGenerics { static class X {} static class A<T>{} public void m1(List<A<? extends X>> list) {} public void m2(A<? extends X> a) { m1(Collections.singletonList(a)); } public void m3(A<? extends X> a) { m1(create(a)); } private List<A<? extends X>> create(A<? extends X> a) { List<A<? extends X>> list = new ArrayList<A<? extends X>>(); list.add(a); return list; } }
Message d'erreur avec javac:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 TestGenerics.java:16: m1(java.util.List<TestGenerics.A<? extends TestGenerics.X>>) in TestGenerics cannot be applied to (java.util.List<TestGenerics.A<capture#10 of ? extends TestGenerics.X>>) m1(Collections.singletonList(a)); ^ 1 error
Partager