首页 / JAVA / Java序列化的实现
Java序列化的实现
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java序列化的实现,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1555字,纯文字阅读大概需要3分钟。
内容图文
![Java序列化的实现](/upload/InfoBanner/zyjiaocheng/597/d5f8a0b72fce4ea5ace8418ca5297e72.jpg)
Java序列化的实现一共有两种方式,实现于接口 Serializable 和Externalizable
Serializable实现序列化细节
序列化类及其对象必须实现Serializable 接口
transient修饰为临时属性,不参与序列化
读取到文件尾部的标记:java.io.EOFException
使用serialVersionUID 属性保证序列化类和反序列化类是一致的
Externalizable实现序列化细节
序列化类及其对象必须实现 Externalizable 接口
transient修饰为临时属性,参与序列化
读取到文件尾部的标记:java.io.EOFException
使用serialVersionUID 属性保证序列化类和反序列化类是一致的
当实现于Externalizable 接口的时候,必须要实现两个方法,手动进行封装,和提取数据
@Override public void writeExternal(ObjectOutput out) throws IOException { out.writeUTF(name);//进行封装String类型 out.writeInt(age); System.out.println("writeExternal"); } @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { name = in.readUTF();//读取String类型 age=in.readInt(); System.out.println("readExternal"); }
当在实体类中 在没有序列化之前定义 private static final int serialVersionUID=1320;
直接进行反序列化会报local class incompatible: stream classdesc serialVersionUID = 312312412423423, local class serialVersionUID = 1320
进行序序列化的时候
Student s = new Student("lisi", 12); FileOutputStream fos = new FileOutputStream("D:\\a.bin"); ObjectOutputStream oos = new ObjectOutputStream(fos); oos.writeObject(s); oos.flush();//清空缓存中的数据从内存存入硬盘
进行反序列化的时候
FileInputStream fis = new FileInputStream("D:\\a.bin");
ObjectInputStream oos = new ObjectInputStream(fis);
Student o = (Student)oos.readObject();
内容总结
以上是互联网集市为您收集整理的Java序列化的实现全部内容,希望文章能够帮你解决Java序列化的实现所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。