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