1 回答
![?](http://img1.sycdn.imooc.com/545861f00001be3402200220-100-100.jpg)
TA贡献1817条经验 获得超14个赞
是的,通常您可以这样做。
忽略流初始化、关闭、异常等的最简单示例。
class Base implements Serializable {
String a;
Base(String a) { this.a = a; }
}
class Access extends Base {
String b;
Base(String a, String b) { super(a); this.b = b; }
}
class Test {
public static void main(String[] args) {
Access access = new Access("string1", "string2");
// Serialization
ObjectOutputStream out = new ObjectOutputStream(...);
out.writeObject(access);
// Deserialization
ObjectInputStream in = new ObjectInputStream(...);
Base base = (Base) in.readObject();
System.out.println("Base.a = " + base.a); // ok, prints "string1"
// System.out.println("Access.b = " + base.b); // -> compilation error -- this is not an Access object; "string2" has not been deserialized.
}
}
但是,没有什么理由这样做。您始终可以反序列化Access以获取所有数据,然后Base根据需要强制转换为。
添加回答
举报