Visualizzazione dei risultati da 1 a 10 su 18

Discussione: Parametri covarianti

Visualizzazione discussione

  1. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da newutente Visualizza il messaggio
    La mia domanda è: se è vero quello che ho appena detto perchè nella seconda riga viene creata una variabile reference di tipo Erbivoro e non di tipo Animale? Provo a rispondere. Perchè in quel caso la variabile reference serve solo per essere passata in input al metodo mangia?
    Animale è:

    interface Animale<C extends Cibo>

    La variabile tigre è Animale<Erbivoro> e con questa parametrizzazione concreta, il C viene fissato a Erbivoro, quindi da un oggetto che è visto come un Animale<Erbivoro> ci si aspetta che abbia un mangia(Erbivoro).
    Difatti Carnivoro che è proprio Animale<Erbivoro> ridefinisce concretamente il mangia(Erbivoro).

    Invocando tigre.mangia( ..... ) puoi passare qualunque cosa che è-un Erbivoro. Non puoi passare una variabile di tipo Animale<QualunqueCibo> perché Erbivoro<QualunqueCibo> è-un Animale<QualunqueCibo> ..... ma il contrario no!


    P.S. lo scenario che è descritto con quelle classi/interfacce di esempio ammetto che è un pochino contorto. Se vuoi esempi più lineari con i generics, te ne posso anche fare!
    Ultima modifica di andbin; 26-11-2014 a 15:23
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.