这个需要每个类中的值都不一样。如果2个不同的类,这个值一样会出现什么事情。
有和没有,有什么区别?
private static final long serialVersionUID = 1L;看见每个类的上面都有这样的代码....
有和没有,有什么区别?
private static final long serialVersionUID = 1L;看见每个类的上面都有这样的代码....
实现后如果你用的是工具的话会出来警告,他会提示你,可以自己动生成
private static final long serialVersionUID = 1L;
他的用途就是
serialVersionUID 用来表明类的不同版本间的兼容性。如果你修改了此类, 要修改此值。否则以前用老版本的类序列化的类恢复时会出错。
为了在反序列化时,确保类版本的兼容性,最好在每个要序列化的类中加入private static final long serialVersionUID这个属性,具体数值自己定义。
不会出现什么问题,生成serialVersionUID方式有两种,1L这种的默认的生成方式,
点击黄色警告,选择第二个,就会生成
private static final long serialVersionUID = 258049273263230953L;
这种无重复的了
在JDK中,可以利用JDK的bin目录下的serialver.exe工具产生这个serialVersionUID,对于Test.class,执行命令:serialver Test。 为了在反序列化时,确保类版本的兼容性,最好在每个要序列化的类中加入private static final long serialVersionUID这个属性,具体数值自己定义。这样,即使某个类在与之对应的对象已经序列化出去后做了修改,该对象依然可以被正确反序列化。否则,如果不显式定义该属性,这个属性值将由JVM根据类的相关信息计算,而修改后的类的计算结果与修改前的类的计算结果往往不同,从而造成对象的反序列化因为类版本不兼容而失败。 不显式定义这个属性值的另一个坏处是,不利于程序在不同的JVM之间的移植。因为不同的编译器实现该属性值的计算策略可能不同,从而造成虽然类没有改变,但是因为JVM不同,出现因类版本不兼容而无法正确反序列化的现象出现。
楼主【s45as4asd】截止到2008-07-10 10:25:21的历史汇总数据(不包括此帖):
发帖的总数量:3 发帖的总分数:100 每贴平均分数:33
回帖的总数量:0 得分贴总数量:0 回帖的得分率:0%
结贴的总数量:0 结贴的总分数:0
无满意结贴数:0 无满意结贴分:0
未结的帖子数:3 未结的总分数:100
结贴的百分比:0.00 % 结分的百分比:0.00 %
无满意结贴率:---------------------无满意结分率:---------------------
如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
序列化ID只是用来表明同一个类的不同版本的向前兼容性的。