您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
Java序列化与反序列化的原理主要基于Java对象流(Object Stream)机制。以下是详细的解释:
定义:
关键步骤:
java.io.Serializable
接口。这是一个标记接口,没有任何方法需要实现。ObjectOutputStream
对象,它负责将对象写入输出流(如文件、网络连接等)。writeObject(Object obj)
方法将对象序列化。序列化过程:
transient
的字段不会被序列化。示例代码:
import java.io.*;
public class Person implements Serializable {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
public class SerializationExample {
public static void main(String[] args) {
Person person = new Person("John", 30);
try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("person.ser"))) {
oos.writeObject(person);
} catch (IOException e) {
e.printStackTrace();
}
}
}
定义:
关键步骤:
ObjectInputStream
:
ObjectInputStream
对象,它负责从输入流(如文件、网络连接等)读取对象数据。readObject()
方法读取并反序列化对象。反序列化过程:
transient
的字段在反序列化后会被赋予默认值(如数值类型为0,引用类型为null)。示例代码:
import java.io.*;
public class DeserializationExample {
public static void main(String[] args) {
try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream("person.ser"))) {
Person person = (Person) ois.readObject();
System.out.println("Name: " + person.getName());
System.out.println("Age: " + person.getAge());
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
}
}
InvalidClassException
。通过以上步骤和注意事项,可以有效地实现Java对象的序列化和反序列化。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。