2011-12-08 3 views
5

기본 클래스가 1 개이고 파생 클래스가 있다고 가정합니다. 파생 클래스에는 기본 클래스에없는 추가 필드가 있습니다.슈퍼 클래스를 통한 직렬화/비 직렬화

그런 다음 파생 클래스를 인스턴스화하고이를 기본 클래스의 정의에 할당합니다. 기본 클래스를 통해 개체를 serialize 및 deserialize하면 어떻게됩니까? 예를 들어

:

Class TypeA{ 
    int var1; 
} 

Class TypeB extends class TypeA{ 
    int var2; 
} 

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

지금 "OBJ를"에는 직렬화하는 경우 포함받을 VAR2합니까?

답변

4

예, 직렬화는 참조 유형 (실제로는 참조 인 것을 의미 함)이 아닌 참조 할 개체의 유형/클래스에 따라 달라집니다 (여전히 TypeB). obj.getClass()으로 전화하면 TypeB.class이 반환되며 직렬화가 표시됩니다.

+0

직렬화, 비 ​​직렬화 한 다음'obj'를'TypeB'로 변환하여 그 권리를 증명할 수 있습니다. – SteeveDroz

관련 문제