序列化流和反序列化流

这篇博客探讨了Java中的序列化与反序列化流程,强调了实现Serializable接口的重要性。作者指出,未显式声明serialVersionUID时,类变化可能导致反序列化错误,而显式声明则能确保版本一致性。此外,使用transient关键字可以阻止字段被序列化。博客通过实例展示了如何使用ObjectOutputStream和ObjectInputStream进行操作。
摘要由CSDN通过智能技术生成
package FileT.Day6;

import java.io.*;

/**
 * 序列化流与反序列化流
 * 序列化需要类实现Serializable接口
 * 如果没有显式声明序列化id,当类的对象被序列化后,如果类发生变化,那么在反序列化对象的时候就会报错,因为版本id不一致。
 * 如果显式声明了序列化id,则当类的对象被序列化后,即便类发生变化也不会影响反序列化,因为id没有变。
 * 显式声明id需要为static final long serialVersionUID。
 * 如果某个字段不想被序列化,可以加关键字transient.
 */
public class XLHTest {
    public static void main(String[] args) throws IOException, ClassNotFoundException {
        write();
        read();

    }
    public static void write() throws IOException {
        ObjectOutputStream oos =new ObjectOutputStream(new FileOutputStream("fox.txt"));
        s s1 =new s(21,"QQ");
        oos.writeObject(s1);
        oos.close();
    }

    public  static  void  read() throws IOException, ClassNotFoundException {
        ObjectInputStream ois =new ObjectInputStream(new FileInputStream("fox.txt"));
        Object o = ois.readObject();
        s ss =(s)o;
        System.out.println(ss.toString());
        ois.close();
    }
}

class s implements Serializable {
    private static final long serialVersionUID =42l;
    transient int age;
    String name;

    public s() {
    }

    public  s(int age, String name) {
        this.age = age;
        this.name = name;
    }

    public  int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "s{" +
                "age=" + age +
                ", name='" + name + '\'' +
                '}';
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值