serialversionuid is required because you have serialized a object in a file
and you deserialized it after few months on different JVM.In between
serialization and deserialization class declaration has been changed.So it is a
good idea to maintain version system and serialversionid does exactly same
thing.It checks if you are deserializing same object which you have serialized.
"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".
So it says you must declare serialVersionUID because it give us more control.for e.g. Default rules for generating serialVersionUID can be too strict in some cases.
For example when the visibility of a field changes, the serialVersionUID changes too. or sometimes you just want to forbid deserialization of old serialized object then you can just change serialVersionUID.Read More →