用ObjectInputStream将字节序列反序列化回对象

 2023-12-22  阅读 4  评论 0

摘要:实现序列化的必备要求:只有实现了Serializable或者Externalizable接口的类的对象才能被序列化为字节序列 Java中的序列化是将对象转换为字节序列的过程,反序列化则是将字节序列转换回对象。实现序列化的必备要求是只有实现了Serializable或者Externalizable接口的类的对象才

用ObjectInputStream将字节序列反序列化回对象

实现序列化的必备要求:只有实现了Serializable或者Externalizable接口的类的对象才能被序列化为字节序列

Java中的序列化是将对象转换为字节序列的过程,反序列化则是将字节序列转换回对象。实现序列化的必备要求是只有实现了Serializable或者Externalizable接口的类的对象才能被序列化为字节序列。

Serializable接口是一个标记接口,即没有任何方法需要实现,只是标识该类的对象可以被序列化。当一个类实现了Serializable接口后,就可以使用Java提供的ObjectOutputStream将该类的对象序列化为字节序列,并使用ObjectInputStream将字节序列反序列化回对象。

示例代码如下:

```java

import java.io.*;

public class Student implements Serializable {

private String name;

private int age;

public Student(String name, int age) {

this.name = name;

this.age = age;

}

public static void main(String[] args) throws IOException, ClassNotFoundException {

Student student = new Student("John", 20);

// 序列化对象

ObjectOutputStream objectOutputStream = new ObjectOutputStream(new FileOutputStream("student.ser"));

objectOutputStream.writeObject(student);

objectOutputStream.close();

// 反序列化对象

ObjectInputStream objectInputStream = new ObjectInputStream(new FileInputStream("student.ser"));

Student deserializedStudent = (Student) objectInputStream.readObject();

objectInputStream.close();

System.out.println(deserializedStudent.getName() + " " + deserializedStudent.getAge());

}

public String getName() {

return name;

}

public int getAge() {

return age;

}

}

```

在上面的示例代码中,我们定义了一个Student类,并实现了Serializable接口。接着,我们创建了一个Student对象,并使用ObjectOutputStream将其序列化为字节序列,并保存到文件中。我们使用ObjectInputStream从文件中读取字节序列,并将其反序列化回Student对象。我们输出反序列化后的Student对象的name和age属性。

需要注意的是,如果一个类实现了Serializable接口,那么该类的所有非transient字段都会被序列化。如果一个字段不希望被序列化,可以将其标记为transient。

版权声明:xxxxxxxxx;

原文链接:https://lecms.nxtedu.cn/yunzhuji/94907.html

标签:

发表评论:

验证码

管理员

  • 内容1196319
  • 积分0
  • 金币0
关于我们
lecms主程序为免费提供使用,使用者不得将本系统应用于任何形式的非法用途,由此产生的一切法律风险,需由使用者自行承担,与本站和开发者无关。一旦使用lecms,表示您即承认您已阅读、理解并同意受此条款的约束,并遵守所有相应法律和法规。
联系方式
电话:
地址:广东省中山市
Email:admin@qq.com
注册登录
注册帐号
登录帐号

Copyright © 2022 LECMS Inc. 保留所有权利。 Powered by LECMS 3.0.3

页面耗时3.3932秒, 内存占用1.64 MB, 访问数据库16次