2011-12-08 32 views
5

Giả sử tôi có 1 lớp cơ sở và một lớp dẫn xuất. Lớp dẫn xuất có các trường bổ sung mà lớp cơ sở không có.Serialize/deserialize qua siêu lớp

Tôi sau đó khởi tạo lớp dẫn xuất và gán nó vào định nghĩa của lớp cơ sở. Điều gì xảy ra khi tôi tuần tự hóa và deserialize đối tượng thông qua lớp cơ sở.

Ví dụ:

Class TypeA{ 
    int var1; 
} 

Class TypeB extends class TypeA{ 
    int var2; 
} 

Class X{ 
    public TypeA obj = new TypeB(); 
} 

Nếu bây giờ tôi serialise "obj" không var2 được bao gồm?

Trả lời

4

Có, việc tuần tự hóa không phụ thuộc vào loại tham chiếu (trong đó obj thực sự là, tham chiếu của tôi) nhưng trên loại/lớp của đối tượng đang được tham chiếu, vẫn là TypeB. Nếu bạn gọi số obj.getClass(), nó sẽ trả lại TypeB.class và đó cũng là thứ mà chuỗi tuần tự sẽ thấy.

+0

Bạn có thể tuần tự hóa, deserialize và sau đó đúc 'obj' để' TypeB' để chứng minh rằng quyền. – SteeveDroz

Các vấn đề liên quan