0

Possible Duplicate:
What is a serialVersionUID and why should I use it?

Why we declare serialVersionUID in java class? What is the use of declaring serialVersionUID in a normal Java class.

class Simple
{
    public static final long serialVersionUID=1L;
}
Community
  • 1
  • 1
Rajesh
  • 31
  • 1
  • 3

3 Answers3

0

Java provides a mechanism, called object serialization where an object can be represented as a sequence of bytes that includes the object's data as well as information about the object's type and the types of data stored in the object.

After a serialized object has been written into a file, it can be read from the file and deserialized that is, the type information and bytes that represent the object and its data can be used to recreate the object in memory.

http://www.tutorialspoint.com/java/java_serialization.htm

Sean F
  • 2,352
  • 3
  • 28
  • 40
0
serialVersionUID is for Serialization Purpose.
private static final long serialVersionUID = 1L;

without serialVersionUID some times got SerialzationException. refer java.io.Serializable

Java Developer
  • 1,873
  • 8
  • 32
  • 63
0

you cant get a better explanation than the doc for java.io.Serializable:

The serialization runtime associates with each serializable class a version number, called a serialVersionUID, which is used during deserialization to verify that the sender and receiver of a serialized object have loaded classes for that object that are compatible with respect to serialization. If the receiver has loaded a class for the object that has a different serialVersionUID than that of the corresponding sender's class, then deserialization will result in an InvalidClassException. A serializable class can declare its own serialVersionUID explicitly by declaring a field named "serialVersionUID" that must be static, final, and of type long:

ANY-ACCESS-MODIFIER static final long serialVersionUID = 42L;

If a serializable class does not explicitly declare a serialVersionUID, then the serialization runtime will calculate a default serialVersionUID value for that class based on various aspects of the class, as described in the Java(TM) Object Serialization Specification. However, it is strongly recommended that all serializable classes explicitly declare serialVersionUID values, since the default serialVersionUID computation is highly sensitive to class details that may vary depending on compiler implementations, and can thus result in unexpected InvalidClassExceptions during deserialization. Therefore, to guarantee a consistent serialVersionUID value across different java compiler implementations, a serializable class must declare an explicit serialVersionUID value. It is also strongly advised that explicit serialVersionUID declarations use the private modifier where possible, since such declarations apply only to the immediately declaring class--serialVersionUID fields are not useful as inherited members.

Rahul
  • 15,979
  • 4
  • 42
  • 63