云主机测评网云主机测评网云主机测评网

云主机测评网
www.yunzhuji.net

java序列话

Java序列化是将对象转换为字节流的过程,以便将其持久化到磁盘或通过网络传输。反序列化则是将字节流转换回对象。

Java序列化是一种将对象转换为字节流的过程,以便将其持久化到磁盘或通过网络传输,反序列化则是将字节流转换回对象的过程,在Java中,可以通过实现java.io.Serializable接口来实现对象的序列化和反序列化。

序列化

1、实现Serializable接口

要使一个类的对象可以被序列化,需要实现java.io.Serializable接口。

import java.io.Serializable;
public class Person implements Serializable {
    private static final long serialVersionUID = 1L;
    private String name;
    private int age;
    // 构造方法、getter和setter方法省略
}

2、使用ObjectOutputStream进行序列化

要将对象序列化为字节流,可以使用java.io.ObjectOutputStream类。

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.io.Serializable;
public class SerializeDemo {
    public static void main(String[] args) {
        Person person = new Person("张三", 30);
        try {
            FileOutputStream fileOut = new FileOutputStream("person.ser");
            ObjectOutputStream out = new ObjectOutputStream(fileOut);
            out.writeObject(person);
            out.close();
            fileOut.close();
            System.out.println("序列化成功,已保存到person.ser文件");
        } catch (IOException i) {
            i.printStackTrace();
        }
    }
}

反序列化

1、使用ObjectInputStream进行反序列化

要将字节流反序列化为对象,可以使用java.io.ObjectInputStream类。

import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.Serializable;
public class DeserializeDemo {
    public static void main(String[] args) {
        Person person = null;
        try {
            FileInputStream fileIn = new FileInputStream("person.ser");
            ObjectInputStream in = new ObjectInputStream(fileIn);
            person = (Person) in.readObject();
            in.close();
            fileIn.close();
        } catch (IOException i) {
            i.printStackTrace();
            return;
        } catch (ClassNotFoundException c) {
            System.out.println("Person类未找到");
            c.printStackTrace();
            return;
        }
        System.out.println("反序列化成功,从person.ser文件中读取到的对象为:");
        System.out.println("姓名:" + person.getName());
        System.out.println("年龄:" + person.getAge());
    }
}

注意:在进行反序列化操作时,需要确保字节流中的类与当前运行的类具有相同的类名、包名和实现的接口,如果这些信息不匹配,将抛出ClassNotFoundException异常。

打赏
版权声明:主机测评不销售、不代购、不提供任何支持,仅分享信息/测评(有时效性),自行辨别,请遵纪守法文明上网。
文章名称:《java序列话》
文章链接:https://www.yunzhuji.net/internet/178603.html

评论

  • 验证码