序列化?什么是反序列化?"/>
java中什么是序列化?什么是反序列化?
序列化
:是将对象转化为字节流或者其他格式的过程,以便能够在网络上传输或者保存到磁盘上。
反序列化
:则是将序列化的字节流或者其他格式转化为对象的过程。
在Java中,用于序列化和反序列化对象的主要类包括以下几个:
-
java.io.Serializable
接口:作为标记接口使用,被实现的类表明其对象是可序列化的。 -
java.io.ObjectOutputStream
类:用于将对象序列化为字节流的输出流。它提供了一系列的write
方法来写入不同类型的数据。 -
java.io.ObjectInputStream
类:用于将字节流反序列化为对象的输入流。它提供了一系列的read
方法来读取不同类型的数据。
这些类可以与其他的输入输出流类(如文件流、网络流等)配合使用来进行对象的序列化和反序列化。
以下是一个简单的例子,展示了如何使用序列化和反序列化类:
import java.io.*;public class SerializationExample {public static void main(String[] args) {// 序列化对象try {MyObject obj = new MyObject("Hello, serialization!");FileOutputStream fileOut = new FileOutputStream("object.ser");ObjectOutputStream out = new ObjectOutputStream(fileOut);out.writeObject(obj);out.close();fileOut.close();System.out.println("对象已序列化并保存到object.ser文件");} catch(IOException e) {e.printStackTrace();}// 反序列化对象try {FileInputStream fileIn = new FileInputStream("object.ser");ObjectInputStream in = new ObjectInputStream(fileIn);MyObject obj = (MyObject) in.readObject();in.close();fileIn.close();System.out.println("对象已从object.ser文件中反序列化: " + obj.getMessage());} catch(IOException | ClassNotFoundException e) {e.printStackTrace();}}
}class MyObject implements Serializable {private String message;public MyObject(String message) {this.message = message;}public String getMessage() {return message;}
}
在上述示例中,MyObject
类实现了Serializable
接口,使得其对象可以被序列化。通过ObjectOutputStream
将MyObject
对象序列化为字节流,并保存到object.ser
文件中。然后,通过ObjectInputStream
读取object.ser
文件中的字节流,并将其反序列化为MyObject
对象。通过调用getMessage()
方法,我们可以获取反序列化后的对象中的消息内容。
更多推荐
java中什么是序列化?什么是反序列化?
发布评论