Quote Originariamente inviata da linux_r Visualizza il messaggio
Potresti riscrivere meglio, proprio in italiano non mi è chiaro ciò che hai scritto . grazie

Purchè carne estenda erba però !!
Scusami, ho fatto un po' di confusione io e ho detto qualche minchiata (ho letto di fretta durante un deploy)

A:
codice:
public class Erbivoro<E extends Erba> implements Cibo, Animale<E> { 
    public void mangia(E e) { }
}
B:
codice:
 
public class Erbivoro implements Cibo,Animale<Erba> { 
    public void mangia(Erba erba) { }
}
La differenza tra A e B è che

in A tu costruisci un erbivoro dicendogli cosa mangerà. E mangerà solo quello

Quindi

Erbivoro<Mele> e = new Erbivoro<Mele>();
e.mangia(new Mele()); // OK

e.mangia(new Pere()); // NO!

In B invece l'oggetto da mangiare lo passi direttamente a mangia() quindi puoi fare:

e.mangia(new Mele()); // OK
e.mangia(new Pere()); // OK!

(sempre restando su sottoclassi di Erba)


Spero di non aver scritto minchiate, sono fuso oggi .-.