我的一些继承Serializable接口的java文件,编译都没问题,但是我用findbugs这个工具来检查,都会报“可能序列化,考虑定义一个serialVersionUID”。
我在google里搜索了一下,都说要定义一个类似“private static final long serialVersionUID = 7526472295622776147L; ”的变量,但是“7526472295622776147L”这个数字是怎麽出来的,而且,我的系统中有多个继承Serializable接口的java文件,难道都要用一个数字吗?解决立刻给分!
我在google里搜索了一下,都说要定义一个类似“private static final long serialVersionUID = 7526472295622776147L; ”的变量,但是“7526472295622776147L”这个数字是怎麽出来的,而且,我的系统中有多个继承Serializable接口的java文件,难道都要用一个数字吗?解决立刻给分!
如果你修改了此类, 要修改此值. 否则以前用老版本的类序列化的类恢复时会出错.
可以利用工具产生这个serialVersionUID命令行: serialver test
这个值倚赖于类名,所实现的接口名,public及protected成员名.
任何对这些信息的改变都会导致不同的serialVersionUID.
因此, 如果不显示定义此值, 你如果对类做了小改动, 反序化时会异常.
为了保证兼容性和提高性能(计算UID会耗时), 建议显示定义此值.你可以随便自定义一个, 也可用上面说的serialver工具产生.