阅读量:0
ChatGPT:implements Serializable 有什么实际作用?
在 Java 中,implements Serializable
是用于标记一个类可以被序列化的声明。序列化是将对象的状态转换为字节流的过程,从而可以将对象保存到文件、数据库,或通过网络传输到其他 Java 虚拟机中。反序列化则是将字节流转换回对象的过程。
Serializable 接口
Serializable
接口是一个标记接口(也称为标记或标签接口),它没有定义任何方法。它的存在只是为了标记一个类的实例可以被序列化。Java 的 ObjectOutputStream
和 ObjectInputStream
类使用 Serializable
接口来确定一个对象是否可以被序列化或反序列化。
如果一个类没有实现 Serializable
接口,而你尝试序列化这个类的对象,会发生以下情况:
- 编译不会报错: 编译器不会因为类没有实现
Serializable
而报错,因为Serializable
接口是一个标记接口,编译器不检查这个。 - 运行时会抛出异常: 在运行时,当尝试序列化一个未实现
Serializable
接口的对象时,会抛出NotSerializableException
。这是因为ObjectOutputStream
检查对象是否实现了Serializable
接口,如果没有实现,就会抛出这个异常。