我想在我的应用程序中更改多个类的包。
不错的eclipse redactor很好,但是我的一些类是Serializables,我需要支持跨版本兼容性。
关于如何做到的任何想法?
可以自动/半自动完成吗?
最佳答案
如果类结构保持不变,则可以子类化自定义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/