November 11, 200619 yr Bonjour, Est-ce que quelqu'un pourrait m'indiquer pourquoi ce code ne compile pas ? private static void print(List<Object> list) { for(Object o:list) System.out.println(o); } public static void main(String[] args) { List<String> list=Arrays.asList(args); print(list) } Merci Edited November 13, 200619 yr by Premium
November 12, 200619 yr Parce que, bien qu'un objet de type String soit assignable à une référence de type Object (car String dérive de Object), un objet de type List<String> ne peut être assigné à une référence de type List<Object>, car ces deux types n'appartiennent pas à la même hiérarchie. Tu ne peux donc pas utiliser une référence de type List<String> en argument d'une méthode acceptant une List<Object>. C'est un piège classique lorsqu'on commence à utiliser les génériques en Java5. Dans ton cas tu as deux solutions : Changer l'interface de ta méthode print en : private static void print (List<String> list), mais tu ne pourras plus passer que des List<String> en paramètre. Changer l'interface de ta méthode print en : private static void print (List<?> list), mais dans ce cas ton paramètre "list" sera restrint à la lecture seule dans la méthode.
November 13, 200619 yr Author Parce que, bien qu'un objet de type String soit assignable à une référence de type Object (car String dérive de Object), un objet de type List<String> ne peut être assigné à une référence de type List<Object>, car ces deux types n'appartiennent pas à la même hiérarchie. Tu ne peux donc pas utiliser une référence de type List<String> en argument d'une méthode acceptant une List<Object>. C'est un piège classique lorsqu'on commence à utiliser les génériques en Java5. Dans ton cas tu as deux solutions : Changer l'interface de ta méthode print en : private static void print (List<String> list), mais tu ne pourras plus passer que des List<String> en paramètre. Changer l'interface de ta méthode print en : private static void print (List<?> list), mais dans ce cas ton paramètre "list" sera restrint à la lecture seule dans la méthode. Merci pour les précisions
Archived
This topic is now archived and is closed to further replies.