Java 如何在反序列化对象中添加新字段?

Java 如何在反序列化对象中添加新字段?,java,serialization,Java,Serialization,拥有一个包含Employee Name、EmployeeId字段的类Employee,并将其序列化 现在,通过对持久化的Employee类进行反序列化,我拥有了1000多个对象 现在在Employee类中添加了新的字段地址 如何将新字段地址添加到已反序列化的对象 注意:无需再次进行任何反序列化。您可以创建一个从Employee扩展的包装器类 然后,获取反序列化的对象,将其传递给包装构造函数et-voila,就得到了它 IMHO,不需要黑魔法来改变运行时类并在对象上动态添加新字段。这就足够了。您的

拥有一个包含Employee Name、EmployeeId字段的类Employee,并将其序列化

现在,通过对持久化的Employee类进行反序列化,我拥有了1000多个对象

现在在Employee类中添加了新的字段地址

如何将新字段地址添加到已反序列化的对象


注意:无需再次进行任何反序列化。

您可以创建一个从Employee扩展的包装器类

然后,获取反序列化的对象,将其传递给包装构造函数et-voila,就得到了它


IMHO,不需要黑魔法来改变运行时类并在对象上动态添加新字段。这就足够了。

您的意思是添加到已经序列化的对象中?请告诉我们用例。。为什么需要?我通过添加新字段修改了employee类,但如何将该字段包含在已反序列化的对象中?@SheelaXavier,反序列化的对象应该包含您最近的类所具有的所有字段。您的意思是在序列化对象中获取字段吗?您的确切用例是什么?如果只是关于Employee的不同版本的兼容性,那么应该将serialVersionUID设置为正确的值。
public class EmployeeWithAddr extends Employee {

    private String address;

    public EmployeeWithAddr(Employee employee) {
        //initialize from employee
    }

    public EmployeeWithAddr(Employee employee, String address) {
        //initialize from employee
        this.address = address;
    }

    public String getAddress() { 
        return address; 
    }

    public void setAddress(String address) {
        this.address = address;
    }

}