2015-08-06 3 views
-2

Имея класс Employee с наполнителями Name, EmployeeId и serialized it.Как добавить новое поле в десериализованные объекты?

Теперь у меня есть более чем 1000 объект, делая deserialization этого неработающего Employee класс.

0 Добавлено: addressEmployee Класс.

Как новое поле address может быть добавлено к уже deserialized объектам?

Примечание: без каких-либо deserialization.

+0

Вы имеете в виду добавить к уже «сериализованным» объектам? –

+0

Расскажите нам об использовании ... зачем вам это нужно? –

+0

Я изменил класс моего сотрудника, добавив новое поле, но как получить это поле в моих уже десериализованных объектах? – sha

ответ

0

Вы можете создать класс-оболочку, который простирается от вашего 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; 
    } 

} 

Затем вы берете десериализованный объект, передать его в обертке конструктора и вуаля, у вас есть.


ИМХО, нет никакой необходимости в черной магии, чтобы изменить класс во время выполнения и добавление новых полей на объекты динамически. Это достаточно хорошо.

Смежные вопросы