我想更改应用程序中多个类的包。 一个很好的 eclipse 编辑器很好,但我的一些类是可序列化的,我需要支持跨版本兼容性。
关于如何完成的任何想法? 可以自动/半自动完成吗?
最佳答案
如果类结构保持不变,您可以子类化自定义 ObjectInputStream,在其构造函数中调用 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 - 如何更改一堆 java 可序列化类的包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3884492/