java序列化的含义和例子

Java序列化是指将一个对象的状态信息转换为字节流,以便于将其存储到内存、文件或数据库中,或者通过网络进行传输,从而跨时间、跨空间共享对象的状态。这个过程称为序列化,它可以将对象转化为二进制,用于保存或网络传输。反序列化则是将字节流恢复为对象的过程。

要实现序列化,需要让类实现Serializable接口,这个接口本身并没有需要实现的方法,它只是为了标注该对象是可被序列化的。然后可以使用一个输出流来构造一个ObjectOutputStream对象,使用ObjectOutputStream对象的writeObject(Object obj)方法就可以将参数为obj的对象写出(即保存其状态)。如果要恢复对象的状态,可以使用输入流。
以下是一个简单的Java序列化的例子:
首先,我们创建一个可序列化的类。为了使一个Java类可序列化,我们需要让其实现java.io.Serializable接口,并给它一个serialVersionUID。
import java.io.Serializable;
public class Person implements Serializable { private static final long serialVersionUID = 1L;
private String name;
private int age;
public Person(String name, int age) { this.name = name;
this.age = age; }
// getters and setters
// … @Override
public String toString() {
return “Person [name=” + name + “, age=” + age + “]”; }}
然后,我们进行序列化和反序列化操作:import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
public class SerializeDemo {
public static void main(String[] args) { Person p = new Person(“John”, 30);
try { // 序列化 FileOutputStream fileOut = new FileOutputStream("./person.ser"); ObjectOutputStream out = new ObjectOutputStream(fileOut); out.writeObject§;
out.close();
fileOut.close(); System.out.printf(“Serialized data is saved in ./person.ser”);
} catch (IOException i) { i.printStackTrace();
} // 反序列化
try { FileInputStream fileIn = new FileInputStream("./person.ser"); ObjectInputStream in = new ObjectInputStream(fileIn);
Person p1 = (Person) in.readObject(); in.close();
fileIn.close(); System.out.println(“Deserialized Person…”); System.out.println(p1);
} catch (IOException i) { i.printStackTrace();
return; } catch (ClassNotFoundException c) { System.out.println(“Person class not found”); c.printStackTrace();
return;
}
}}
这个例子中,我们首先创建了一个Person对象,并将其序列化到文件person.ser中。然后我们从该文件中反序列化Person对象。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zz_ll9023one

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值