🧠 What is serialVersionUID
?
serialVersionUID
is a special static final long
field that acts like a version number for a class.
It’s used to ensure that a serialized object can be deserialized correctly, even if the class has changed.
private static final long serialVersionUID = 1L;
🎯 Why Is It Important?
When Java deserializes an object, it checks:
“Is the class I’m loading now the same version as the class used when this object was saved?”
It does this by comparing the serialVersionUID
.
🧪 What Happens If It Doesn’t Match?
💥 You get an exception like:
java.io.InvalidClassException:
local class incompatible:
stream classdesc serialVersionUID = 12345,
local class serialVersionUID = 67890
This means:
- You serialized an object using class version A
- You’re trying to load it using class version B
- But Java says: “Nope, too different!”
✅ How to Prevent That
Always declare it manually:
private static final long serialVersionUID = 1L;
This way, even if you change the class (add fields, tweak methods), you control compatibility.
⚠️ What Happens If You Don’t Declare It?
Java automatically generates a serialVersionUID
based on:
- Class name
- Interfaces
- Method signatures
- Fields
If you change anything, the computed UID changes = 💣 potential incompatibility.