【二】序列化与反序列化初步实践笔记

序列化与反序列化

1.Serializable

  • 类实现 Serializable
  • 保存数据到本地磁盘
        ObjectOutputStream oos= new ObjectOutputStream(new FileOutputStream("D:/test/wuqingvika0204.dat"));
        oos.writeObject(person);
        oos.close();
    
  • 从本地加载并读取
       ObjectInputStream ois=new ObjectInputStream(new FileInputStream("D:/test/wuqingvika0204.dat"));
       Person person=(Person)ois.readObject();
       ois.close();
       return person;
    
  • 不想被序列化的字段如何处理:
    • 采用transient关键字来修饰字段即可。但它仅与Serializable配合使用。

2.Externalizable

  • 类实现 Externalizable
  • 需要实现两个方法:
       @Override
           public void writeExternal(ObjectOutput out) throws IOException {
               out.writeObject(this.getName());
               out.writeInt(this.getAge());
           }
       
           @Override
           public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
               this.setName((String)in.readObject());//这里位置不能颠倒
               this.setAge( in.readInt());
           }
    
  • 其余序列化到本地磁盘和加载数据同上。
  • 这里说下我遇到的坑:读取时候需要与写入字段顺序位置一致。不然报错。
  • 另外,transient在这里使用无效。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • JAVA序列化机制的深入研究 对象序列化的最主要的用处就是在传递,和保存对象(object)的时候,保证对象的完整...
    时待吾阅读 10,959评论 0 24
  • 原帖地址:原帖个人网站地址:个人网站简书对markdown的支持太完美了,我竟然可以直接Ctrl C/V过来。 定...
    ryderchan阅读 3,833评论 1 9
  • 1. Java序列化和反序列化(What) Java序列化(Serialize)是指将一个Java对象写入IO流中...
    悠扬前奏阅读 914评论 2 1
  • 序列化和反序列化的概念 序列化:把java对象转换为字节序列的过程称为对象的序列化,这些字节序列可以被保存在磁盘上...
    snoweek阅读 723评论 0 3
  • 我是一个爱做梦的梦。 会烦恼,会忧愁 会忧郁,会孤独 会恐惧,会害怕 会流泪,会悲伤 会失落,会失望 但,我知道 ...
    爱做梦的梦阅读 324评论 0 4