假设有一个类`MyClass`实现了`java.io.Serializable`接口,并且拥有一个名为`data`的私有成员变量,类型为`java.util.List<Integer>`,如果`data`引用的列表本身没有实现`java.io.Serializable`,则当尝试序列化`MyClass`的实例时,会发生什么?

答案解析

选项A错误,如果`java.util.List`的实例本身没有实现`java.io.Serializable`,其状态无法被序列化,因此并不是值丢失,而是无法序列化。选项B错误,`data`成员变量不会指向一个空列表,而是由于未实现Serializable而导致序列化失败。选项C正确,由于`java.util.List`的实例(如果其本身没有实现`java.io.Serializable`)没有实现`java.io.Serializable`接口,序列化器在尝试序列化它时会抛出`java.io.NotSerializableException`。选项D错误,如C所述,序列化会失败,所以不可能反序列化,更不可能保留值。只有当列表中的元素本身也实现了`java.io.Serializable`,序列化才能成功。
正确答案:C
随机推荐
开始刷题