java - make - stackoverflow serialize object




Importa ciò che scelgo per serialVersionUID quando estendo le classi Serializable in Java? (2)

Sto estendendo una classe (ArrayBlockingQueue) che implementa l' interfaccia Serializable . La documentazione di Sun (e il mio IDE) mi consiglia di impostare questo valore al fine di prevenire il danno:

Tuttavia, si consiglia vivamente che tutte le classi serializzabili dichiarino esplicitamente i valori serialVersionUID, poiché il calcolo serialVersionUID predefinito è estremamente sensibile ai dettagli della classe che possono variare a seconda delle implementazioni del compilatore e può pertanto comportare imprevisti InvalidClassException durante la deserializzazione.

Ora, non potrei importarmi di meno del valore da mettere lì dentro. Importa?


L'unica cosa che conta per serialVersionUID è che le versioni serializzate compatibili con i binari della classe hanno lo stesso serialVersionUID; cioè se non hai apportato alcuna modifica alla forma serializzata della classe, andrà bene.

Ovviamente, un'opzione migliore consiste nell'utilizzare le opzioni avanzate che la serializzazione mette a vostra disposizione in modo che non ci siano mai cambiamenti di rottura. Suggerirei di leggere su readResolve () et al. Java efficace copre in dettaglio alcuni dei problemi più spinosi in quest'area.


No - a condizione che tu lo cambi al momento giusto (cioè quando apporti una modifica che influisce sulla serializzazione, ad esempio rimuovendo un campo), non dovrebbe importare quale valore usi.

Per semplicità suggerirei di iniziare con 0 e aumentarlo di 1 ogni volta che è necessario.

Le specifiche di serializzazione hanno più dettagli.





serialization