2014-01-17 13 views
11
class A implements Serializable{ 
    private static final long serialVersionUID = 5L; 
    ... 
} 

undSollte serialVersionUID für verschiedene Klassen eindeutig sein?

class B implements Serializable{ 
    private static final long serialVersionUID = 6L; 
    ... 
} 

dann ist es notwendig, einzigartige serialVersionUID für beide Klassen zu geben.

Also kann ich serialVersionUID = 5L für beide Klassen zuweisen?

Ich lese folgende Links

Why generate long serialVersionUID instead of a simple 1L?

What is a serialVersionUID and why should I use it?

Antwort

8

Ja, Sie können. Serielle Versionen verschiedener Klassen sind unabhängig und stören sich nicht gegenseitig.

PS
Eclipse-selbst bietet Ihnen serialVersionID durch Standardwert festlegen, die 1L ist.

3

serialVersionUID benötigt wird Versionen der Klasse zu erinnern. Dies sollte beim Serialisieren und Deserialisieren gleich sein. Es ist eine gute Programmierpraxis, diesen Wert bereitzustellen, anstatt JVM einen zuzuweisen (im Allgemeinen ist es Hash). Es ist nicht notwendig, dass zwei Klassen eindeutige Werte haben.

+0

Ich möchte wissen "Es sollte für einzelne Klasse einzigartig sein, aber möglicherweise ist es das gleiche für zwei verschiedene Klasse" –

+0

@Aniket könnten Sie bitte diese Zeile erklären. "Es ist nicht notwendig, dass zwei Klassen eindeutige Werte haben" –

+1

Es bedeutet, dass zwei verschiedene Klassen denselben ** serialVersionUID ** -Wert haben können. –

0

Ja, es ist möglich, dass zwei verschiedene Klassen die selbe serialVersionUID-Variable haben können. Aber bevorzugen Sie eine eindeutige für jede Klasse.Verwenden Sie auch 8 bis 10 Stellen länger statt 1 als Wert.

Verwandte Themen