Diciamo che ho ottenuto le classi A, B, C tali che B
si estende A
e C
si estende anche A
.Progettazione di estensione corretta Java per una classe con una raccolta generica
ora ho 2 classi diverse, permette chiamarli MyClassB
e MyClassC
con un membro del ArrayList<B>
e ArrayList<C>
respectfuly.
Dal momento che molte azioni in MyClassB
e MyClassC
sono gli stessi e sono fatto solo sul diverso tipo di ArrayList, ho voluto creare una nuova classe astratta MyClassA
che avrà un'implementazione delle stesse azioni su un ArrayList<A>
per entrambi classe, poiché A
è la parte comune su cui le azioni sono uguali.
Così ho provato a creare un metodo nella nuova classe che riceve un elenco come argomento e si suppone che effettui l'azione su tale elenco. Tuttavia, non posso passare un ArrayList<B>
al metodo in cui si aspetta ArrayList<A>
.
Quindi cosa posso fare per mantenere le stesse azioni in una classe diversa e non ripetere il codice in 2 classi diverse?
Utilizzare un carattere jolly, come?, Ad es. ArrayList extends A> arr = new ArrayList(); – avk
@avk - la covarianza potrebbe essere o non essere richiesta qui. per esempio. sort (ArrayList) – ZhongYu