【问题标题】:How to add new field in deserialized objects?如何在反序列化对象中添加新字段?
【发布时间】:2015-08-06 07:49:12
【问题描述】:

有一个类Employee,其中包含员工NameEmployeeIdserialized 的字段。

现在我有多个 1000 对象,方法是执行 deserialization 的持久化 Employee 类。

现在在Employee 类中添加了新字段address

如何将新字段address 添加到已经存在的deserialized 对象中?

注意:不要再做任何deserialization

【问题讨论】:

  • 您的意思是添加到已经存在的serialized 对象?
  • 告诉我们用例.. 为什么需要它?
  • 我通过添加新字段修改了我的员工类,但是如何将该字段包含在我已经反序列化的对象中?
  • @SheelaXavier,一个反序列化的对象应该包含你最新课程的所有字段。您的意思是获取序列化对象中的字段吗?
  • 您的具体用例是什么?如果只是关于Employee 不同版本的兼容性,您应该将serialVersionUID 设置为正确的值。

标签: java serialization


【解决方案1】:

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

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;
    }

}

然后,您将反序列化的对象传递给包装器构造函数,瞧,您就拥有了。


恕我直言,无需使用黑魔法来更改运行时类并在对象上动态添加新字段。这已经足够了。

【讨论】:

    猜你喜欢
    • 2023-03-06
    • 2019-07-10
    • 1970-01-01
    • 1970-01-01
    • 2016-03-11
    • 2011-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多