Bonjour à tous,

Je suis en train de nettoyer le code d'une application développée initialement en Java 1.4 et je me retrouve avec un problème que certains on sans doute déjà rencontré.

Pourquoi n'est-il pas possible de déclarer : "List<A> liste = new ArrayList<B>()" avec B implémentant A ?

Merci d'avance pour toute information.

Exemple :
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
23
 
import java.util.ArrayList;
import java.util.List;
 
public class TestList {
 
	public static void main(String[] args) {
 
		A monA = new B() ; 
		// Ok
 
		List<A> liste = new ArrayList<B>() ; 
		// Erreur à la compilation : Type mistmach : cannot convert ArrayList<B> to List<A>
	}
 
	static interface A {
		// Nop	
	}
 
	static class B implements A {
		// Nop
	}
}