java - 如何更改一堆 java 可序列化类的包

标签 java serialization

我想更改应用程序中多个类的包。 一个很好的 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/

相关文章:

java - primefaces 4 - 如何在每次事件发生时创建新的对话框实例

java - 如何在Java中将文本文件中的数据读取到数组中

java - 如何在 pom 中查找未使用的属性

java - 动态数据库连接的连接池

java - 是否可以围绕类级别变量创建 AspectJ 切入点?

node.js - 使用 faye 通过 websockets 发送 javascript 对象

c++ - 在 C++ 中使用指针序列化一个类

java - 如何忽略 XStream 的类型?

java - 加载序列化类

java - 启用对象映射器 writeValueAsString 方法以包含空值