serialVersionUID 需要么?
老是的代码里没有加入private static final long serialVersionUID = 1L;这行么?我的环境,没有这行会报错呢~
但是加上后运行结束了,我又去掉这行serialVersionUID 。竟然又不出错了~什么鬼
老是的代码里没有加入private static final long serialVersionUID = 1L;这行么?我的环境,没有这行会报错呢~
但是加上后运行结束了,我又去掉这行serialVersionUID 。竟然又不出错了~什么鬼
2016-04-19
因为之前你的类是没有被编译过的(即没有生成.class文件)。当实现java.io.Serializable接口的实体(类)没有显式地定义一个名为serialVersionUID,类型为long的变量时,Java序列化机制会根据编译的class(它通过类名,方法名等诸多因素经过计算而得,理论上是一一映射的关系,也就是唯一的)自动生成一个serialVersionUID作序列化版本比较用,这种情况下,当你运行一次之后,class文件已经产生了,如果class文件(类名,方法明等)没有发生变化(增加空格,换行,增加注释,等等),就算再编译多次,serialVersionUID也不会变化的。。至于你未运行之前没添加UID就会报错,可能是你软件设置的原因。
举报