2012-01-16 3 views
3

Existe-t-il un équivalent en Java 1.5 à Enumerable.Cast() de C#? Je veux attribuer un ArrayList<MyType> à une variable déclarée comme List<Object>. Eclipse gronde "Type discordance: ne peut pas convertir de ArrayList<MyType> à List<Object>". J'utilisais juste List et ArrayList sans génériques mais le compilateur m'avertit à ce sujet, et je voulais nettoyer quelques avertissements.Java - Enumerable.Cast() comme C#?

Répondre

7

Il serait risqué de lancer si vous alliez ajouter à la liste. Toutefois, si vous voulez seulement chercher dans la liste, vous pouvez utiliser:

ArrayList<MyType> specificList = new ArrayList<MyType>(); 
List<? extends Object> generalList = specificList; 

ou plus près de Enumerable.Cast serait d'utiliser Iterable:

Iterable<? extends Object> generalIterable = specificList; 

Il est dommage que vous avez besoin même de préciser le caractère générique ici (j'ai été surpris que vous l'avez fait) étant donné que Iterable est une interface "lecture seule".

Pour plus d'informations sur les génériques Java, voir le Java Generics FAQ.

+0

Merci! J'ai ajusté certains types de retour et de paramètres pour avoir ' 'au lieu de' 'et tout est heureux maintenant. –

+0

@SarahVessels: L'utilisation de caractères génériques pour les types de paramètres est correcte (et à quoi ils servent principalement), mais vous devez essayer d'éviter de les utiliser dans les types de retour lorsque cela est possible. – ColinD

+0

@ColinD: Je pourrais mettre à jour mes classes que j'attends comme type de retour pour partager une interface, donc je peux avoir un type de retour de 'List '. –

Questions connexes