Supongamos que tengo una clase A y A1, A2 hereda de A. Hay 2 funciones:Diseño modelo: El polimorfismo de la lista de objetos
List<A1> getListA1(){...}
List<A2> getListA2(){...}
Ahora quiero hacer algo similar a A1 y tanto A2 en otra función
public void process(List<A>){...}
Si quiero pasar a la instancia de cualquiera de ListA1 o ListA2, por supuesto, los tipos no coincide porque el compilador no permite la coacción de la Lista < A1> < a la lista a >. No puedo hacer algo como esto:
List<A1> listA1 = getListA1();
List<A> newList = (List<A>)listA1; //this is not allowed.
Entonces, ¿cuál es el mejor enfoque para el proceso()? ¿Hay alguna forma de hacerlo de forma universal en lugar de escribir el código similar para la Lista y la Lista?
pensé en esto antes. El problema es que estos 2 métodos se utilizan en otro lugar, y he cambiado todo el lugar relacionado. – zsong