Maison >Java >javaDidacticiel >Comment puis-je convertir une liste de supertypes en une liste de sous-types en Java ?

Comment puis-je convertir une liste de supertypes en une liste de sous-types en Java ?

DDD
DDDoriginal
2024-12-27 17:15:12144parcourir

How Can I Cast a List of Supertypes to a List of Subtypes in Java?

Conversion d'une liste de supertypes en une liste de sous-types

Vous pouvez rencontrer une situation dans laquelle vous avez une liste d'objets d'un supertype et désir de les convertir en un sous-type spécifique. Pour illustrer, considérons la hiérarchie de classes suivante :

public class TestA {}
public class TestB extends TestA {}

Vous pouvez avoir une méthode renvoyant un List et vous souhaitez convertir chaque élément de la liste en TestB, ce qui donne un List .

Solution

Diffusion directe vers Liste ne réussira pas car il viole les règles de sécurité des types génériques de Java. Cependant, vous pouvez utiliser une astuce en diffusant via un type de caractère générique intermédiaire :

List<TestB> variable = (List<TestB>)(List<?>) collectionOfListA;

Cette diffusion est autorisée car les types de caractères génériques peuvent être à la fois diffusés vers et depuis, bien qu'avec un avertissement non vérifié. En utilisant le type générique comme intermédiaire, vous pouvez réussir à convertir votre liste de supertypes en la liste de sous-types souhaitée.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn