千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > java的序列化和反序列化

java的序列化和反序列化

来源:千锋教育
发布人:wjy
时间: 2023-03-14 15:46:00 1678779960

  Java序列化是指将一个Java对象转换为一个字节序列,以便将其保存到文件中或通过网络传输到其他计算机。Java反序列化是指将字节序列转换回Java对象。

  Java中实现序列化和反序列化的核心类是ObjectOutputStream和ObjectInputStream。ObjectOutputStream提供了一个方法,可以将Java对象写入输出流中。ObjectInputStream提供了一个方法,可以从输入流中读取Java对象。

  为了使Java对象可序列化,必须在类定义中添加一个特殊的标记接口Serializable。这个接口没有任何方法,它只是指示这个类可以被序列化。

java的序列化和反序列化

  以下是一个简单的例子,展示了如何将一个对象序列化到文件中,然后从文件中反序列化回来:

import java.io.*;

public class SerializationExample {
public static void main(String[] args) {
// Create an object to be serialized
MyClass object = new MyClass("Hello", 123);

// Serialize the object to a file
try (FileOutputStream fos = new FileOutputStream("file.ser");
ObjectOutputStream oos = new ObjectOutputStream(fos)) {
oos.writeObject(object);
} catch (IOException e) {
e.printStackTrace();
}

// Deserialize the object from the file
try (FileInputStream fis = new FileInputStream("file.ser");
ObjectInputStream ois = new ObjectInputStream(fis)) {
MyClass deserializedObject = (MyClass) ois.readObject();
System.out.println(deserializedObject);
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
}
}

class MyClass implements Serializable {
private String message;
private int number;

public MyClass(String message, int number) {
this.message = message;
this.number = number;
}

public String getMessage() {
return message;
}

public int getNumber() {
return number;
}

@Override
public String toString() {
return "MyClass{" +
"message='" + message + '\'' +
", number=" + number +
'}';
}
}

  在上面的例子中,MyClass实现了Serializable接口,并将其对象序列化到名为“file.ser”的文件中。然后,我们从文件中反序列化对象,并打印出它的内容。注意,在反序列化对象时,必须将Object类型的返回值强制转换为我们的自定义类型MyClass。

tags:
声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT