2014-05-05 13 views
5

È serialVersionUID ereditato da sottoclassi, se ho il valore predefinito serialVersionUID nella superclasse? Analogamente a quando la superclasse è serializzabile, anche le sottoclassi sono serializzabili.È serialVersionUID ereditato da sottoclassi, se ho default serialVersionUID nella superclasse

ho avuto una superclasse inizialmente alcun valore predefinito serialVersionUID così mi è stato sempre:

local class incompatible: stream classdesc serialVersionUID = -3473908186986930430, 
local class serialVersionUID = -7527159820765531130 

Così ho aggiunto questo al superclasse:

private static final long serialVersionUID = 1L; 

La mia domanda è: fa serializzazione considerano serialVersionUID dalla superclasse durante la serializzazione di sottoclassi o meno. Devo specificare serialVersionUID in ogni sottoclasse in modo esplicito?

+2

vedere questo [chiedere] prima di chiedere qui –

+0

Non è chiaro cosa si sta chiedendo, ma la serializzazione Java è qualcosa da evitare come la peste. Se vuoi serializzare/deserializzare oggetti Java, prova i buffer del protocollo, invece: https://code.google.com/p/protobuf/ –

+2

@ MichaelAaronSafyan "Evitato come la peste" lo sta mettendo troppo forte. J2EE si basa su di esso in una serie di punti critici, per esempio. – EJP

risposta

10

È serialVersionUID ereditato da sottoclassi, se ho default serialVersionUID in superclasse?

Sì è ereditato, ma no, la serializzazione non lo considererà come appartenente alla sottoclasse e non lo userà.

Analogamente a quando la superclasse è serializzabile, anche le sottoclassi sono serializzabili.

Non è simile. Serializable è un'interfaccia ed è soggetta solo alle regole della lingua. serialVersionUID è un campo speciale con le proprie regole applicate da ObjectInputStream.

+2

'La serializzazione non lo considererà come appartenente alla sottoclasse e non lo userà. Potresti chiarire quell'ultimo bit:' e non usarlo? ' Intendi che ObjectInputStream non utilizzerà serialVersionUID della superclasse? – Dylanthepiguy

+0

@Dylanthepiguy Quale parte di 'non usarlo' non hai capito? – EJP

Problemi correlati