什么是Java中的串行版本ID?

Gur*_*lki 39 java serialization

可能重复:
我为什么要打扰serialVersionUID?
什么是串行版本ID?

当我在Eclipse中创建一个扩展java.util.logging.Level的新类时,它要求我添加一个默认或生成的串行版本ID.我只是盲目地添加而不知道它是什么以及为什么我必须添加它.

任何人都可以告诉我它是什么以及它为什么需要它.

tan*_*ens 37

序列化和反序列化对象时使用串行版本ID.Java识别您要反序列化的字节是否与本地类版本匹配.如果不是,它会抛出异常.

这在执行RMI或持久化对象结构时很重要.

关于序列化在Serializablejavadoc中有一个非常好的描述.


小智 12

它是类的唯一标识符,用于序列化.

如果你是在尽快序列化,那么声明它是明智的,因为如果你没有声明一个,那么在更改类时它会自动生成另一个并且序列化将停止工作.

这里有一个很好的参考:http: //c2.com/ppr/wiki/JavaIdioms/AlwaysDeclareSerialVersionUid.html