Mã dưới đây hoạt động như thế nào?Nối tiếp một đối tượng có lớp cha không tự tuần tự
class A {
int a = 10;
}
class B extends A implements Serializable{
}
public class Test {
public static void main(String[] args){
B obj = new B();
obj.a = 25;
//Code to serialize object B (B b= new B()),
// deserialize it and print the value of 'a'.
}
}
Mã in 10 mặc dù tôi đã thay đổi giá trị 'a' trong mã.
Bất kỳ lời giải thích nào về hành vi này?
Phương thức khởi tạo no-args của lớp cơ sở non-'Serializable' được sinh ra nhất được thực hiện, các lớp khác của đối tượng được deserialised như mong đợi. –
Bạn nên sử dụng Mẫu proxy tuần tự để tuần tự hóa đúng cách (ví dụ: cũng sắp xếp thứ tự các trường chính). Xem ví dụ http://java.dzone.com/articles/serialization-proxy-pattern –