2010-02-13 13 views
33

Possibili duplicati:
Why should I bother about serialVersionUID?
what is a serial version id?Che cos'è l'ID versione seriale in Java?

quando ho creato una nuova classe che estende java.util.logging.Level in Eclipse, mi ha chiesto di aggiungere un default o generati seriale versione ID. Ho appena aggiunto alla cieca senza sapere di cosa si tratta e perché devo aggiungerlo.

Qualcuno può dirmi di cosa si tratta e perché è necessario.

+3

duplicati: http://stackoverflow.com/questions/615181/what-is-a-serial-version-id, http://stackoverflow.com/questions/285.793/why-dovrebbe-i-fastidio-about-serialVersionUID – Bozho

risposta

34

L'ID della versione seriale viene utilizzato durante la serializzazione e deserializzazione di un oggetto. Java riconosce se i byte che vuoi deserializzare corrispondono alla versione della classe locale. In caso contrario, genererà un'eccezione.

Questo è importante quando si eseguono RMI o strutture di oggetti persistenti.

C'è una descrizione molto buona sulla serializzazione nello javadoc of Serializable.

12

È l'identificativo univoco per la classe, utilizzato per la serializzazione.

È consigliabile dichiararlo se si sta serializzando al più presto perché se non si dichiara uno, quando si modifica la classe ne verrà generato uno diverso automaticamente e la serializzazione smetterà di funzionare.

Un buon riferimento è qui: http://c2.com/ppr/wiki/JavaIdioms/AlwaysDeclareSerialVersionUid.html