java 序列化

对象的序列化:目的:将一个具体的对象进行持久化,写入到硬盘上。

注意:静态数据不能被序列化,因为静态数据不在堆内存中,是存储在静态方法区中。

 

如何将非静态的数据不进行序列化?transient 关键字修饰此变量即可。

 

Serializable用于启动对象的序列化功能,可以强制让指定类具备序列化功能,该接口中没有成员,这是一个标记接口。这个标记接口用于给序列化类提供UID。这个uid是依据类中的成员的数字签名进行运行获取的。如果不需要自动获取一个uid,可以在类中,手动指定一个名称为serialVersionUID id号。依据编译器的不同,或者对信息的高度敏感性。最好每一个序列化的类都进行手动显示的UID的指定。

class ObjectStreamDemo {

    public static void main(String[] args) throws Exception{

        writeObj();

        readObj();

    }

    public static void readObj()throws Exception{

        ObjectInputStream ois = new ObjectInputStream(new FileInputStream("obj.txt"));

        Object obj = ois.readObject();//读取一个对象。

        System.out.println(obj.toString());

    }

    public static void writeObj()throws IOException{

        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("obj.txt"));

        oos.writeObject(new Person("lisi",25)); //写入一个对象。

        oos.close();

    }

}
class Person implements Serializable{

    private static final long serialVersionUID = 42L;

    private transient String name;//用transient修饰后name将不会进行序列化

    public int age;

    Person(String name,int age){

        this.name = name;

        this.age = age;

    }

    public String toString(){

        return name+"::"+age;

    }

}

详细学习,可参考博文:https://www.cnblogs.com/xdp-gacl/p/3777987.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值