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

    Creazione di eccezioni proprie - problema "serializable"

    Questo problema non mi sembra di averlo mai avuto in passato, non capisco perché salti fuori ora (sarà l'aggiornamento all'update 1.6.0.17 che ho fatto?!)

    Comunque questa è la mia semplicissima classe:

    codice:
    public class EmptyStackException extends RuntimeException
    {
    	public EmptyStackException() {}
    	
    	public EmptyStackException(String message)
    	{
    		super(message);
    	}
    }
    E' una semplice eccezione.

    Il compilatore mi dà un warning:

    "serializable class EmptyStackException has no definition of serialVersionUID"
    Fino a venti minuti fa non avevo la più pallida idea di che cosa fosse un classe che implementa Serializable.

    In effetti la mia eccezione estende RuntimeException che estende Exception che estende Throwable che implementa serializable

    Dopo aver letto qualcosa su google ho capito che il compilatore si aspetta un una costante privata all'interno della mia classe (cioè il serialVersionUID). Se non ho capito male rappresenta la versione della classe (e andrebbe aggiornato incrementandolo ad ogni modifica della classe...) e permette alla JVM di usare oggetti riferiti ad una precedente esecuzione della JVM (ha senso quello che ho scritto? )

    Tutto molto bello ma....

    A livello pratico come posso togliere quel warning?

    Aggiungo la costante richiesta? E se sì da cosa parto? "1L"?

    Questo a livello pratico cosa potrà mai modificare nell'esecuzione del mio programma? Nulla?

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    502
    Anche io ho la 1.6.0_17 e la tua classe non mi da nessun warning.
    Se la classe implementa Serializable... aggiungilo alla definizione della classe e vedi se continua a darti il warning.

  3. #3
    Hai compilato con -Xlint?

    Comunque io "non vorrei" che implementasse Serializable. Il punto è che la mia classe estende RuntimeException che implementa Serializable!

    Com'è possibile che a te non dia il warning?

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    502
    No non ho nessuna opzione.
    Ho riprovato a fare clean and build con Netbeans. Nessun Warning, nemmeno se tolgo la Serializable

  5. #5
    Demoniaco!

    Hai qualcosa che ti sopprime i warning?

    Se dai da consolle "javac EmptyStackExcpetion.java -Xlint" te lo compila tranquillo senza warning?

    Se sì non so da cosa possa dipendere... non ho modificato nessun parametro...

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    502
    da console mi da lo stesso tuo warning.
    da netbeans no.
    e ho tolto tutti i flag per la compilazione.

  7. #7
    Ok, il warning è quanto meno duplicabile

    Come posso risolverlo? Come devo assegnare il UID?

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    502
    questo lo ignoro.
    quando usavo la serializzazione su XML mettevo solo la direttiva implements senza assegnare io un serialVersionID.

    Credo che sia un valore int da mettere nelle dichiarazioni, ma non ne sono assolutamente sicuro.

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    502
    Prova a dare una lettura a questo link

  10. #10
    Sì, avevo già letto quel link prima di postare...

    Quello che non so è cosa posso impostare come valore UID...

    Va bene "1L" su ogni eccezione? O devo usare una logica diversa?

    Qualcuno sa aiutarmi?

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.