Visualizzazione dei risultati da 1 a 8 su 8

Hybrid View

  1. #1
    Grazie mille per la risposta

    Utilizzo il downcasting perchè utlizzando il metodo con la classe Oggetto (astratta), mi restituisce un'errore di tipo NullPointerException.

    edit: Di fatto io utlizzavo il controllo in questo modo: Se la classe è di tipo es. Regalo allora utilizzo eventualmente un metodo esclusivo della classe regalo, altrimenti puoi utilizzare qualsiasi metodo ereditato dalle sottoclassi... Ma mi dà l'errore sopra..

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da GigiAriete Visualizza il messaggio
    Utilizzo il downcasting perchè utlizzando il metodo con la classe Oggetto (astratta), mi restituisce un'errore di tipo NullPointerException.
    Le due cose (downcast e NullPointerException) non centrano tra di loro. Se hai un NPE è perché stai facendo qualcosa di sbagliato con i reference in generale o perché hai dimenticato qualche inizializzazione da qualche parte. Il downcast non centra, LeleFT ti ha già risposto perfettamente dicendo quello che ti avrei detto io se fossi riuscito a postare prima di lui.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Grazie a entrambi!
    Quindi per il downcasting non c'è bisogno di tutto quel codice perchè lo fa in "automatico", ok.
    Il problema è che, ad esempio in una classe Tester, utilizzando il metodo pesoTotale(), mi restiuisce in fase di esecuzione quell'errore se scrivo semplicemente o.peso(), mentre va tutto bene se faccio tutto il casino postato sopra.

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da GigiAriete Visualizza il messaggio
    Quindi per il downcasting non c'è bisogno di tutto quel codice perchè lo fa in "automatico", ok.
    È appunto il "polimorfismo". E non fa alcun downcast lui in automatico.

    Quote Originariamente inviata da GigiAriete Visualizza il messaggio
    utilizzando il metodo pesoTotale(), mi restiuisce in fase di esecuzione quell'errore se scrivo semplicemente o.peso()
    Se uno degli elementi nel tuo array può essere null, questo chiaramente va testato, fai la/e invocazione/i su o solo se o != null. Ma questo non centra nulla con downcast e polimorfismo.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Grazie, funziona! Mi ero dimenticato del controllo sul valore null!
    Ultima domanda: se i metodi sono ereditati dalla superclasse, allora agisce il polimorfismo. Se un metodo invece appartiene solamente ad UNA sottoclasse, chiaramente devo fare un casting esplicito dopo aver controllato che sia effettivamente un'istanza di quella sottoclasse?
    Grazie ancora per la pazienza!

    edit: ad esempio se Libro ha: numeroPagine()

    Allora QUI è giusto che faccia

    if (o.instanceof Libro)
    tot += (Libro)o).numeroPagine(); ??

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da GigiAriete Visualizza il messaggio
    se i metodi sono ereditati dalla superclasse, allora agisce il polimorfismo.
    Ereditato e ridefinito. Allora sì, invocando su un reference della classe base (superclasse) hai una invocazione polimorfica.

    Quote Originariamente inviata da GigiAriete Visualizza il messaggio
    Se un metodo invece appartiene solamente ad UNA sottoclasse, chiaramente devo fare un casting esplicito dopo aver controllato che sia effettivamente un'istanza di quella sottoclasse?
    Grazie ancora per la pazienza!

    edit: ad esempio se Libro ha: numeroPagine()

    Allora QUI è giusto che faccia

    if (o.instanceof Libro)
    tot += (Libro)o).numeroPagine(); ??
    Sì, se numeroPagine() è "nuovo" solo in Libro, non puoi fare altrimenti. Oggetto non ne "sa" nulla di numeroPagine, non ce l'ha e quindi o.numeroPagine() non compilerebbe nemmeno.
    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 © 2026 vBulletin Solutions, Inc. All rights reserved.