Salut,

Quelqu'un pourrait-il m'expliquer pourquoi m2 ne compile pas alors que m3 compile...?
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;
	}
 
}
(que ça soit avec eclipse ou avec javac)

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