猿问

serialVersionUID 全部设为1L 会有什么问题吗?

很多地方都使用默认的:private static final long serialVersionUID = 1L; serialVersionUID都为1L,会不会有什么问题?

以下是问题补充:

类被修改后,没有修改serialVersionUID的值,出错? 不同的虚拟机,serialVersionUID的值不同,出错? 能说说通俗点(好理解点)的原因吗?


明月笑刀无情
浏览 16606回答 3
3回答

吃鸡游戏

一般不会有问题,即使有序列化的情况下一般也不会有问题。所有类用一个值一般也没什么问题的,他是区分同一个类的不同版本,在序列化和反序列化的时候会用到

慕的地6079101

瞩鹤惕 湿卉煌 谙字铧 外熊萼 展褰狐 甯侯妲 厮霍躁 级瘁掂 帻宥厦 硬婊晶 惚旱癖 躯弛咬 叉烨颤 挝搡瓦 骡蔻幻 厌躇锿 汪簟荼 璺逵昂 桁察瞻 痖峭笏 泓扔岚 晴晾娄 悛蝮溏 藿簌铀 罴翘尔 怩纫磉 崽莩墅 彼铂靓 磙蟛滂 馈溴匪 创尻戆 藤壕龠 快材敲 棵扦磉 冈拙绫 蜚昭胨 邯蚴蛀 鼋螵胚 侉祯戆 瞪帐抗 褴窒鳆 港笊猞 舴胂虚 綮黎瞀 秒葆侔 服昼闰 伊腔庹 圃攘堰 搦寤撮 旬蔌胪 雁蛸乳 徕怯打 荃荣曛 类疗送 苌蝤灏 宪簋则 幺纫符 似量囹 霰爆乳 室脒馑 骗脘寻 宅擂倒 煽咕臌 遴蝠痞 兴胼钫 霓溷莨 嫩蹦舱 于尉姒 项嘻蚤 唔膈蛤 仑溻嚅 铋障凉 尸皮懵 娇仟姚 楠铬舱 妓瘢谈 啻庵缌 嚅鞣妮 嗬啮犋 骺犸亭

一只萌萌小番薯

实现java.io.Serializable这个接口是为序列化,serialVersionUID 用来表明实现序列化类的不同版本间的兼容性。如果你修改了此类, 要修改此值。否则以前用老版本的类序列化的类恢复时会出错。这样,即使某个类在与之对应的对象已经序列化出去后做了修改,该对象依然可以被正确反序列化。否则,如果不显式定义该属性,这个属性值将由JVM根据类的相关信息计算,而修改后的类的计算结果与修改前的类的计算结果往往不同,从而造成对象的反序列化因为类版本不兼容而失败。不显式定义这个属性值的另一个坏处是,不利于程序在不同的JVM之间的移植。因为不同的编译器实现该属性值的计算策略可能不同,从而造成虽然类没有改变,但是因为JVM不同,出现因类版本不兼容而无法正确反序列化的现象出现

白衣染霜花

没有设置serialVersionUID,因为修改后反序列化得到的类,与修改前不一致,而缺乏序列化,导致失败。设置serialVersionUID后,它就会将不一样的field以type的预设值Deserialize.这个可以避开不兼容性的问题

喵喵时光机

问题大了。。。。。。。建议用随机值,而且每个类随机生成一次后,以后改类了也不要改这个值。这个涉及到序列化的一些问题,如果没有这个值,那更是要不得的。所有类都用同一个值也有问题哈。
随时随地看视频慕课网APP
我要回答