Serializable和transient关键字

  1. 通过序列化可以将对象保存在磁盘或者网络中传递
  2. 实现对象的序列化,对应的类必须实现Serializable接口
  3. 通过java.io.ObjectOutputStream的
  4. writeObject()方法可以将对象输出到磁盘文件、网络等设备
  5. 通过java.io.ObjectInputStream的readObject()方法可以从磁盘文件中读出保存的对象
  6. 通过在属性前面加上transient关键字,限制属性写入到文件或网络中

例子:

package org.example.面向对象;

import java.awt.*;
import java.io.*;

public class SPerson implements Serializable {

    public int age;
    public transient String name;

    public SPerson(){};

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

    public static void save(){
        try{
            ObjectOutputStream outputStream=new ObjectOutputStream((new FileOutputStream("person.txt")));
            outputStream.writeObject(new SPerson("xiaohong",18));
            outputStream.close();
        }catch (Exception e){
            e.printStackTrace();
        }finally {

        }
    }
    public static void read(){
        try{
            ObjectInputStream inputStream=new ObjectInputStream(new FileInputStream("person.txt"));
            SPerson person=(SPerson) inputStream.readObject();
            System.out.println(person.name+" "+person.age);
        }catch (Exception e){
            e.printStackTrace();
        }finally {

        }
    }
}

serialVersionUID

实现Serializable接口后,一般要自己加上serialVersionUID,表明是这个类的序列号和反序列化的唯一标记;一般开发工具可以自动生成。在序列化的时候,会将这个UID存储到文件中;反序列的时候,会用文件中的UID和类中的UID进行比较,如果是不一样的,那么反序列话会失败。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

塔塔o

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

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

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

打赏作者

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

抵扣说明:

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

余额充值