Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    eccezioni final

    Ciao a tutti.
    Sto esaminando un codice scritto da una persona che di Java ne sa parecchio.
    Però non capisco una cosa. Ad un certo punto del codice cè:
    codice:
    try{
             ...
    }catch(final MyException e){ ... }
    Non capisco perchè fa il catch di una eccezione final.
    Final da quanto so io se dichiarato nelle classi fa in modo che non si possa estendere, ma prima di un'eccezione non l'avevo mai visto.
    Qualcuno sa il perchè di questa cosa?

    Grazie

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    final ha anche altri utilizzi. In questo caso è stata dichiarata e come "non modificabile". In pratica il riferimento all'oggetto non può essere modificato.
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: eccezioni final

    Originariamente inviato da albyblueska
    Final da quanto so io se dichiarato nelle classi fa in modo che non si possa estendere, ma prima di un'eccezione non l'avevo mai visto.
    - Una variabile (qualunque: parametro, locale, di classe/istanza) 'final' è assegnabile solo 1 volta e poi non è più modificabile.
    - Una classe 'final' non è estendibile.
    - Un metodo 'final' non permette un overriding/hiding in una sottoclasse.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    Ok ma facendo un catch final MyException semplicemente non memorizandosi il riferimento in ogni caso non è modificabile o no?

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da albyblueska
    Ok ma facendo un catch final MyException semplicemente non memorizandosi il riferimento in ogni caso non è modificabile o no?
    Quella 'e' è una variabile (locale al blocco del catch) di tipo MyException. Se è final non sarà modificabile (è assegnata dalla JVM con l'oggetto della eccezione).
    Tutto qui.

    Se dentro quel blocco del catch hai una inner-class (local/anonymous) che deve accedere alla variabile 'e', allora sì, 'e' deve essere final. Altrimenti non se ne vedrebbe molto il senso di metterla final ... perché dovresti assegnarci qualcos'altro??
    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.