Confrontare il tipo Generics a runtime

  • Creatore Discussione Creatore Discussione Ang444
  • Data di inizio Data di inizio
Stato
Chiusa ad ulteriori risposte.

Ang444

Nuovo Utente
7 Nov 2019
1
0
1
Ciao, sto eseguendo un esercizio che prevede di caricare vari tipi di Merce (es. A, B, C) su di un Automezzo.
E' previsto però, che si possa settare un Automezzo al carico di un solo tipo di Merce (es. A).
Ho pensato di utilizzare i Generics definendo la classe: Automezzo <E extends CategoriaMerce> dove CategoriaMerce è la super classe dei singoli tipi di merce (A, B, C).

Quando uso il metodo caricaAutomezzo, vado a popolare una lista così definita: List<E> lista = new ArrayList<>();

Fin qui funziona tutto.

L'esercizio richiede anche che si possa trasferire la merce da un'Automezzo all'altro, lasciando sul primo solo la merce che non è caricabile sul secondo.

Cerco di trasferire la merce utilizzando il metodo sotto riportato, ma, per via dell' erasure, nel caso dell'automezzo "dedicato", non mi è possibile effettuare il controllo del tipo tra "s" (che è la merce iterata nella lista) e il tipo generico precedentemente settato nel main per "aut2".


public void trasferisciMerce (Automezzo<E> aut1, Automezzo<E> aut2) {

for(Iterator<E> itr = aut1.lista.iterator(); itr.hasNext();) {
E s = itr.next();

if(itr.equals(aut2)) {
aut2.caricaAutomezzo(s);

if(a == 1) {
itr.remove();
aut1.disponM3 = aut1.disponM3+s.getM3Merce();
aut1.disponKg = aut1.disponKg+s.getPesoTotaleCollo();
aut1.nuovaVel = aut1.nuovaVel+(s.getPesoTotaleCollo()/100);

}
} else System.out.println("Tipologia non compatibile");
}

Non dovrei usare i generics? Sapete consigliarmi altro?
Grazie mille a tutti in anticipo.
 
Questa è la sezione per presentarsi al forum non per fare domande!

Leggi attentamente il regolamento generale del forum e quello della sezione dove posti prima di continuare a scrivere sul forum
Grazie
 
Stato
Chiusa ad ulteriori risposte.

Discussioni simili