很多地方都使用默认的:private static final long serialVersionUID = 1L; serialVersionUID都为1L,会不会有什么问题?以下是问题补充:类被修改后,没有修改serialVersionUID的值,出错? 不同的虚拟机,serialVersionUID的值不同,出错? 能说说通俗点(好理解点)的原因吗?
3 回答
慕的地6079101
TA贡献3593条经验 获得超0个赞
瞩鹤惕
湿卉煌
谙字铧
外熊萼
展褰狐
甯侯妲
厮霍躁
级瘁掂
帻宥厦
硬婊晶
惚旱癖
躯弛咬
叉烨颤
挝搡瓦
骡蔻幻
厌躇锿
汪簟荼
璺逵昂
桁察瞻
痖峭笏
泓扔岚
晴晾娄
悛蝮溏
藿簌铀
罴翘尔
怩纫磉
崽莩墅
彼铂靓
磙蟛滂
馈溴匪
创尻戆
藤壕龠
快材敲
棵扦磉
冈拙绫
蜚昭胨
邯蚴蛀
鼋螵胚
侉祯戆
瞪帐抗
褴窒鳆
港笊猞
舴胂虚
綮黎瞀
秒葆侔
服昼闰
伊腔庹
圃攘堰
搦寤撮
旬蔌胪
雁蛸乳
徕怯打
荃荣曛
类疗送
苌蝤灏
宪簋则
幺纫符
似量囹
霰爆乳
室脒馑
骗脘寻
宅擂倒
煽咕臌
遴蝠痞
兴胼钫
霓溷莨
嫩蹦舱
于尉姒
项嘻蚤
唔膈蛤
仑溻嚅
铋障凉
尸皮懵
娇仟姚
楠铬舱
妓瘢谈
啻庵缌
嚅鞣妮
嗬啮犋
骺犸亭
一只萌萌小番薯
TA贡献1795条经验 获得超7个赞
实现java.io.Serializable这个接口是为序列化,serialVersionUID 用来表明实现序列化类的不同版本间的兼容性。如果你修改了此类, 要修改此值。否则以前用老版本的类序列化的类恢复时会出错。
这样,即使某个类在与之对应的对象已经序列化出去后做了修改,该对象依然可以被正确反序列化。否则,如果不显式定义该属性,这个属性值将由JVM根据类的相关信息计算,而修改后的类的计算结果与修改前的类的计算结果往往不同,从而造成对象的反序列化因为类版本不兼容而失败。
不显式定义这个属性值的另一个坏处是,不利于程序在不同的JVM之间的移植。因为不同的编译器实现该属性值的计算策略可能不同,从而造成虽然类没有改变,但是因为JVM不同,出现因类版本不兼容而无法正确反序列化的现象出现
白衣染霜花
TA贡献1796条经验 获得超10个赞
没有设置serialVersionUID,因为修改后反序列化得到的类,与修改前不一致,而缺乏序列化,导致失败。
设置serialVersionUID后,它就会将不一样的field以type的预设值Deserialize.这个可以避开不兼容性的问题
喵喵时光机
TA贡献1846条经验 获得超7个赞
问题大了。。。。。。。建议用随机值,而且每个类随机生成一次后,以后改类了也不要改这个值。这个涉及到序列化的一些问题,如果没有这个值,那更是要不得的。所有类都用同一个值也有问题哈。
- 3 回答
- 0 关注
- 16605 浏览
添加回答
举报
0/150
提交
取消