黑马程序员:对象字节流:ObjectInputStream、ObjectOutputStream
来源:互联网 发布:一起游网游淘宝 编辑:程序博客网 时间:2024/09/21 09:06
---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
操作对象:
ObjectInputStream与ObjectOutputStream注意:被操作的对象需要实现Serializable、这两个对象需要成对使用
UID是根据类中的各个成员、修饰符等计算出来的。
如何设置UID:
ANY-ACCESS-MODIFIER(任何修饰符) static final long serialVersionUID = 42L;
为什么不让JAVA自动生成UID,而自己设置UID呢?
原因是因为不想通过加入了一点的成员或修饰符后就导致ObjectInputStream读取不出曾经被序列化的对象的现象示例:
class Person implements Serializable{private String name;private int age;Person(String name, int age){this.name = name;this.age = age;}@Overridepublic String toString() {return name:age;}}
oos.writeObject(new Person("lisi",39));
oos.close();
上例中,若没有设置UID,将Person对象写入到obj.txt文件中后,Person中修改了一个修饰符或者成员编译后,导致UID发生了变化,这时候通过ObjectInputStream读取Person对象的时候就会出现UID不匹配的异常
ObjectInputStream ios = new ObjectInputStream(new FileInputStream("obj.txt"));
Person p = (Person)ios.readObject();
System.out.println(p);
ios.close();
若不通过设置UID,又不想影响UID的变化的话,可以通过静态化成员或者transient修饰,使其变量不被序列化。
静态成员不能被序列化,序列化是序列化堆内存中的内容,静态成员不再堆内存中
若非静态成员也不想被序列化,可以加修饰符 transient
如:transient int age; 这样age就不能被序列化了,保证age在堆内存中存在,而不能存入到文件中,也就是age不能被持久化,在通过入读obj.txt中的对象时候,age位置就会为0
对象字节流的作用:
将对象封装到文件中,使对象持久化,调用者只需拿到该对象的class文件及.object文件,直接打印对象即可得到其中的数据了,不需要任何其他操作
---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------详细请查看:http://edu.csdn.net- 黑马程序员:对象字节流:ObjectInputStream、ObjectOutputStream
- 黑马程序员:字节流与字符流的转换/ObjectOutputStream;ObjectInputStream
- 黑马程序员——Java IO—字节流—ObjectInputStream和ObjectOutputStream
- 对象流(ObjectOutputStream 和 ObjectInputStream)
- 黑马程序员——ObjectInputStream和ObjectOutputStream
- java对象流ObjectInputStream、ObjectOutputStream的使用
- Java 对象流ObjectInputStream和ObjectOutputStream类
- 【IO流】ObjectOutputStream,ObjectInputStream 对象的读写
- 对象操作流(ObjectInputStream,ObjectOutputStream )
- Java 对象流ObjectInputStream和ObjectOutputStream
- java 对象流(ObjectOutputStream,ObjectInputStream)
- 对象序列化ObjectOutputStream,ObjectInputStream
- 对象序列化 ObjectInputStream ObjectOutputStream
- 使用对象流读写对象代码笔记(ObjectInputStream ,ObjectOutputStream)
- Java IO流->处理流->对象流:ObjectOutputStream&ObjectInputStream
- IO流之对象流ObjectOutputStream和ObjectInputStream
- Java浅谈流之对象流ObjectInputStream和ObjectOutputStream
- 操作对象的流ObjectOutputStream,ObjectInputStream、随机读取流RandomAccessFile
- PHP中curl 的用法总结
- 020 栈适配器的操作:
- sharepoint2010搜索的简单设置
- android listview item 滚动到顶部
- [Qt教程] 第34篇 网络(四)FTP(二)
- 黑马程序员:对象字节流:ObjectInputStream、ObjectOutputStream
- 字符串hash函数(hashCode的生成)
- QT错误:collect2:ld returned 1 exit status
- 接口测试的两种方法
- Asp.Net配置Web.Config更改默认上传文件大小限制!(适用于win7\win2003的IIS)
- [Qt教程] 第35篇 网络(五)获取本机网络信息
- 第十二周(一)——这是今年第几天
- 秒杀场景下MySQL的低效原因和改进
- 第十一周项目一调用函数输出型号图