java 序列化 uid,Java中的序列化版本uid
How is Serialization id stored in the instance of the object ?
The Serialization id we declare in Java is static field;and static fields are not serialized.
There should be some way to store the static final field then. How does java do it ?
解決方案
The serialVersionUID is not stored in the instance of a "serialized" object, as it is an static field (it is part of the class, not part of the object).
Therefore, it is stored in the compiled bytecode if it is actually defined, otherwise it is computed. In the java specification's words:
If the class has defined serialVersionUID it is retrieved from the class. If the serialVersionUID is >not defined by the class, it is computed from the definition of the class in the virtual machine. If >the specified class is not serializable or externalizable, null is returned.
In the Stream Unique Identifiers section, the algorithm for such computation is explained.
This paragraph is noteworthy (that's why IDEs usually show a warning when a class implementing Serializable has not explicitly defined a serialVersionUID).
Note: 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 serialVersionUID conflicts during deserialization, causing deserialization to fail.
總結
以上是生活随笔為你收集整理的java 序列化 uid,Java中的序列化版本uid的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java instead of 用法_我
- 下一篇: java applet 换行_Java复