What means 1L serialVersionUID? When could I use this default value 1L?

前端 未结 8 1982
生来不讨喜
生来不讨喜 2021-02-05 07:02

There are 3 ways to define the serialVersionUID :

1. private static final long serialVersionUID = 1L; (Default)
2. private static final long serialVersionUID = -         


        
8条回答
  •  予麋鹿
    予麋鹿 (楼主)
    2021-02-05 07:36

    This is explain here:

    The serialVersionUID is a universal version identifier for a Serializable class. Deserialization uses this number to ensure that a loaded class corresponds exactly to a serialized object. If no match is found, then an InvalidClassException is thrown.


    From the javadoc:

    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:


    Useful Links

    1. java.io.Serializable
    2. Why should I bother about serialVersionUID? (StackOverflow)
    3. serialVersionUID in Java Serialization

提交回复
热议问题