在Java中,若一个类实现了`java.io.Serializable`接口,但其某个非静态成员变量被声明为`transient`,当该类的实例被序列化后又反序列化,关于该成员变量的描述,下列哪个是正确的?

答案解析

当一个类的成员变量被声明为`transient`时,JVM在序列化该类的实例时会跳过该成员变量,即不会将其状态写入字节流。在反序列化时,由于序列化流中没有该成员变量的信息,JVM会为该成员变量赋予其类型的默认值。因此,选项B正确。选项A错误,`transient`关键字的作用就是阻止序列化,因此反序列化后该变量的值不会被保留。选项C错误,虽然该变量的值没有被序列化,但该变量仍然存在于反序列化后的对象中。选项D错误,`java.io.NotSerializableException`异常是在尝试序列化未实现`java.io.Serializable`接口的类时抛出的,而不是在反序列化`transient`变量时抛出。
正确答案:B
随机推荐
开始刷题