我想要更改应用程序中多个类的包。 一个好的Eclipse编辑器会很棒,但我的某些类是可序列化的,我需要支持跨版本兼容性。
有什么办法可以做到吗? 可以自动/半自动完成吗?
我想要更改应用程序中多个类的包。 一个好的Eclipse编辑器会很棒,但我的某些类是可序列化的,我需要支持跨版本兼容性。
有什么办法可以做到吗? 可以自动/半自动完成吗?
enableResolveObject(true)
,然后重写readClassDescriptor()
,例如:protected ObjectStreamClass readClassDescriptor() throws IOException, ClassNotFoundException {
ObjectStreamClass read = super.readClassDescriptor();
if (read.getName().startsWith("com.old.package.")) {
return ObjectStreamClass.lookup(Class.forName(read.getName().replace("com.old.package.", "org.new.package.")));
}
return read;
}
如果你改变类的名称或包名,就会破坏序列化的兼容性。
你必须找到一种方法来保持你的类在同一个包中,否则你就必须打破向后兼容性。
如果你仍然在之前版本的应用程序上进行更新,你可以创建一个强制更新,改变数据序列化方式并且不使用默认的Java序列化。
同一主题:
enableResolveObject(true)
是不必要的。 - vanto