Ma scusate una cosa se il serialUID non centra nulla con la versione della JVM perchè quando genero con la JVM 1.6 il serialUID di una classe è diverso da quello generato dalla JVM 1.4.02 sulla medesima classe?
Perchè a questo punto se io salvo i dati serializzati su file o su db con JVM 1.4.02 e poi quando ricompilo e rigenero l'UID con la 1.6 deserializzando lo stream serializzato salvato su file o db non mi dovrebbe dare errore, se il calcolo dell'UID fatto dalla 1.6 è diverso dalla 1.4.02?? E così anche se non lo metto cmq i due lo generano di default e dovrebbe accadere lo stesso?? a meno che di generarlo una volta sola e riusare lo stesso serialUID iniziale calcolato con JVM vecchia anche per la nuova JVM(senza farlo rigenerare dalla JVM nuova).. giusto?


Originariamente inviato da andbin
Se ti riferisci alla super-classe non serializzabile con costruttore no-arg, allora non sbagli!

La classe serializzabile deve implementare in metodi speciali writeObject/readObject e deve poter accedere in lettura/scrittura ai campi della super-classe, altrimenti la (de)serializzazione non potrebbe essere completa (i campi della super-classe avrebbero valori di default).

I campi, per essere accessibili dalla sotto-classe devono essere resi accessibili tramite metodi setter/getter oppure marcati protected, quale dei due modi, dipende dal design.