Interview Questions
Java
java Advanced Interview questions
Java Freshers Interview Questions
Java Interview Questions
Java Interview Questions
Java interview questions
Java Written Test Questions and Answers
SerialVersionUID in Java
In this post, we will see more details on SerialVersionUID and also issues with default serial version id.
SerialVersionUID:
- Java uses
serialVersionUID
field for versionsing. - It’s a static and final field of type
long
- JVM uses
serialVersionUID
to verify that the class being deserialized is compatible with the class that was used to serialize the object. - When a class is serialized, a
serialVersionUID
value is generated by the serialization mechanism based on the class’s structure. - In deserialization, the deserialized class is compared to the serialized class based on the
serialVersionUID
values. If they don’t match, aInvalidClassException
is thrown. - Add
private static final long
field with a specific value to set theserialVersionUID
for a class - It is best practice to update the
serialVersionUID
value every time a change is made to the class that would affect its serialization. This helps to ensure that the deserialization process will work as expected when using different versions of the class.
Default SerialVersionUID
- In java , the default
serialVersionUID
is generated based on the class’s structure with fields: class Name, fields, and inheritance hierarchy. - If we made any changes to that class then it will affects class structure. As a result default
serialVersionUID
value will be different, Hence deserialization will fail with aInvalidClassException
. - it is very important to explicitly set the
serialVersionUID
value for a class that is going to be serialized especially if it is part of a public API or if you expect it to be used for a long time. - you can control the versioning of the class and ensure compatibility between different versions of the class by setting
serialVersionUID
explicitly
Thanks for Reading..