数据加载中……
SerialVersionID问题
(一些对象的状态需要保存到磁盘或数据库中时,需要实现Serializable接口)
结论:在实现Serializable接口时,IDE一般会提醒你设置一个SerialVersionID,这样做的好处是方便在不同编译器之间代码的移植。编译器在读取Serial对象时,会比较source与target的SerialVersionID是否一致,如果一致会产生InvalidClassException。
在Eclipse中忽略该情况操作方法:Window-->Preferences-->Java-->Compiler-->Errors/Warnings-->Potential programming problems
问题:SerialVersionID是否在不同的类中有不同的值?
回答:不需要。因为SerialVersionID本身是static final,是全局的,而且一般都是针对当前类,所以一般都是private。编译器在DeSerializable的时候,对象都是当前类,不需要不同类设置不同值。
问题:不显示声明SerialVersionID是错的吗?
回答:不是。编译器有自己的生成SerialVersionID的规则,但是不同编译器的规则又是不一致的,这样就会造成已Serial对象SerialVersionID与当前编译器DeSerial出来的SerialVersionID不一致,产生Exception。尽可能将所有可以序列化类都显示声明SerialVersionID。

posted on 2008-04-10 10:08 牛浪de流 阅读(502) 评论(0)  编辑  收藏 所属分类: 爪哇学习


只有注册用户登录后才能发表评论。


网站导航: