Serializable和transient关键字

阅读量: 3 编辑

一、Serializable 和 transient 关键字介绍

1、目标:将对象保存到磁盘或者在网络中传递;

2、通过对象系列化,可以将对象保存在磁盘或网络中;

3、为了实现对象系列化,对应的类必须实现 Serializable 接口;

4、通过java.io.ObjectOutputStreamwriteObject()方法可以将对象输出到磁盘文件、网络等设备;

5、通过java.io.ObjectInputStreamreadObject()方法可以从磁盘文件中读出保存的对象;

6、通过在属性前面加上transient关键字,限制属性写入到文件或网络中;

一、编程实战

代码的详细解读,可以参考视频教程

import java.io.Serializable;

/**
 * User: 祁大聪
 */
public class Person implements Serializable {

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

}

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

    }
}
public static void read(){
    try {
        ObjectInputStream input = new ObjectInputStream(new FileInputStream("persion.txt"));
        Persion persion = (Persion)input.readObject();
        System.out.println(persion.name+" "+persion.age);

    }catch (Exception e){
        e.printStackTrace();
    }finally {

    }
}

二、serialVersionUID

实现 Serializable 接口后,一般要自己加上 serialVersionUID,表明是这个类的序列号和反序列化的唯一标记;

一般开发工具可以帮你自动生成;

在序列化的时候,会将这个 UID 存储到文件中;反序列化的时候,会用文件中的UID和类中的UID进行比较,如果是不一样的,那么反序列化会失败;

爱码岛编程公众号
试卷资料
爱码岛编程小程序
在线刷题
苏ICP备13052010号
©2023 南京匠成信息科技有限公司