Java Serializable对象实例:实现数据读写

0 下载量 129 浏览量 更新于2024-09-01 收藏 28KB PDF 举报
在Java编程中,序列化(Serialization)是一种将对象的状态转换为字节流的过程,以便于存储或在网络上传输。序列化对于实现跨平台的数据持久化和网络通信至关重要。当一个类实现了`java.io.Serializable`接口后,它的实例可以被转换为字节流,反之亦然,通过反序列化可以将其恢复为原来的对象状态。 在这个实例中,我们有一个名为`Student`的类,它实现了`Serializable`接口,表明该类可以被序列化。`Student`类包含了几个私有变量:`name`(姓名)、`id`(学生ID)、`age`(年龄),以及一个`students`列表,表示关联的学生群体。这些变量都有对应的getter和setter方法,用于获取和设置属性值。 `toString()`方法被重写,用于在序列化过程中提供一个字符串表示,方便查看对象的信息。当对象被序列化时,会调用这个方法,生成包含所有字段值的字符串。 以下是如何使用序列化来读写`Student`对象的步骤: 1. 创建一个`Student`对象并设置属性值: ```java Student student = new Student(); student.setName("张三"); student.setId("001"); student.setAge(18); List<Student> studentsList = new ArrayList<>(); student.setStudents(studentsList); // 添加学生列表 ``` 2. 序列化对象: ```java ObjectOutputStream outputStream = null; try { outputStream = new ObjectOutputStream(new FileOutputStream("student.ser")); outputStream.writeObject(student); } catch (IOException e) { e.printStackTrace(); } finally { try { if (outputStream != null) { outputStream.close(); } } catch (IOException e) { e.printStackTrace(); } } ``` 这段代码创建了一个`ObjectOutputStream`,并将`student`对象写入到名为`student.ser`的文件中。 3. 反序列化对象: ```java ObjectInputStream inputStream = null; Student deserializedStudent = null; try { inputStream = new ObjectInputStream(new FileInputStream("student.ser")); deserializedStudent = (Student) inputStream.readObject(); } catch (IOException | ClassNotFoundException e) { e.printStackTrace(); } finally { try { if (inputStream != null) { inputStream.close(); } } catch (IOException e) { e.printStackTrace(); } } System.out.println(deserializedStudent); // 输出序列化前的对象信息 ``` 这段代码通过`ObjectInputStream`从文件中读取已序列化的`Student`对象,并将其转换回原始对象。 总结来说,Java中的`Serializable`接口允许我们将对象持久化,便于存储和传输。在实际应用中,序列化常用于网络通信、持久化存储(如数据库)等场景,确保对象状态的一致性。上述实例展示了如何创建、序列化和反序列化一个`Student`对象,这是Java编程中处理可序列化对象的基础操作。