Supponiamo che io sono una classe A e A1, A2 eredita da A. Ci sono 2 funzioni:Design Pattern: polimorfismo per la lista di oggetti
List<A1> getListA1(){...}
List<A2> getListA2(){...}
Ora voglio fare qualcosa di simile a entrambi A1 e A2 in un'altra funzione
public void process(List<A>){...}
Se voglio passare l'istanza di una ListA1 o ListA2, naturalmente, i tipi non corrisponde perché il compilatore non consente coercizione dalla lista < A1> to List < a >. Non posso fare qualcosa del genere:
List<A1> listA1 = getListA1();
List<A> newList = (List<A>)listA1; //this is not allowed.
Quindi qual è l'approccio migliore al processo()? Esiste un modo per farlo in modo universale piuttosto che scrivere il codice simile sia per List che per List?
ho pensato a questo prima. Il problema è che questi 2 metodi sono usati altrove, e ho cambiato tutto il posto correlato. – zsong