JAVA对象序列化

java对象序列化

对象序列化的概念

  • 所谓对象序列化就是指将一个保存的对象变成一个二进制的数据流进行传输。但并不是所有类的对象都可以进行序列化操作,如果一个对象需要被序列化,则对象所在的类必须实现Serializable接口。但是在此接口中并没有定义任何方法,所以此接口和Cloneable接口一样都是作为标示接口出现的。
public class Person implements Serializable{
    private String name;
    private int age;
    public Persion(String name,int age){
        this.name=name;
        this.age=age;
    }
    public String toString(){
        return "姓名"+this.name+",年龄"+this.age;
    }
}

此时,Person类的对象已经允许被序列化操作了,即变成了二进制的byte流。
如果想要序列化,需要使用ObjectOutputStream类完成。如果想要反序列化,则需要ObjectInputStream类完成。

对象序列化:把Java对象转换为字节序列的过程

  • ObjectOutputStream主要是序列化对象的使用,也是一个OutputStream的子类。
pbulic class ObjectOutputStreamDemo{
    public static void main(String[] agrs)throws Exception{
    Person per=new Person("张三",30);
    ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream(new File("D:"+File.separator+"person.ini")));
    oos.writeObject(per);//序列化对象
    oos.close();
    }
}

反序列化对象:把字节序列恢复为Java对象的过程

  • ObjectInputStream就可以完成对象的反序列化功能,方法如下:
    构造:public ObjectInputStream(InputStream) throws IoException
    读取对象:public final Objecte readObject() throws IOException,ClassNoFoundException
pbulic class ObjectInputStreamDemo{
    public static void main(String[] agrs)throws Exception{
    ObjectinputStream ois=new ObjectInputStream(new FileInputStream(new File("D:"+File.separator+"person.ini")));
    Object obj=ois.readObject();//读取序列化的对象
    ois.close();
    if(obj instanceof Person){
        Person per=(Person)obj;
    }
    }
}

transient关键字

  • 实际上在进行对象序列化的时候,序列化的是类中的属性,每个类的对象只有属性是不同的,但是如果现在有某个属性不希望被序列化下来的话,则可以使用transient关键字。
private transient String name;
private int age;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值