usar propiedades codigo java generics collections casting type-erasure

codigo - propiedades slider java



Java: tipo de colección de conversión para subtipo (4)

Esta pregunta ya tiene una respuesta aquí:

Supongamos que la clase B extiende la clase A Tengo una List<A> que, por casualidad, solo sé que contiene ejemplares de B ¿Hay alguna manera de convertir la List<A> en una List<B> ?

Parece que mi única opción es iterar sobre la colección, lanzando un elemento a la vez, creando una nueva colección. Esto parece una pérdida total de recursos porque el borrado de tipos hace que esto sea completamente innecesario en tiempo de ejecución.


Puede transmitir a través de la interfaz de la lista sin tipo:

List<A> a = new ArrayList<A>(); List<B> b = (List)a;


Puedes intentar esto:

List<A> a = new ArrayList<A>(); List<B> b = (List<B>) (List<?>) a;

Se basa en la respuesta de jarnbjo, pero no utiliza listas crudas.


Una forma de retener algún tipo de seguridad con un impacto mínimo en el rendimiento es usar un wrapper . Este ejemplo es sobre Colección, el caso de la Lista sería muy similar y tal vez un día también lo escriba. Si alguien más viene antes que nosotros, por favor compartamos el código.