java 序列化学习笔记
什么是序列化?它是JAVA为了将对象写入到文件中产生的机制,也就是只有在对象数据流中才能用到,目的就是为了从文件中读取或者记录对象。
序列化就是将对象写入到“硬盘”中,该对象必须继承Serializable接口(不用实现任何方法),这个接口仅仅起到标记的作用
eg: public class Person implements Serializable{}
静态属性是不能被序列化的,因为它在“堆”中
“transient”修饰之后可以指定某些属性不被序列化
eg: transient int age;
序列化之后的文件名命名规则:对象名称.object;因为这个文件不是用来给用户看的,打开了里面全部是乱码,但是我们应该从文件名中可以看出这个文件是存储的什么东西,作用是什么,所以文件名尤为重要
读写对象的方法示例
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("c:\\Person.object"));
oos.writeObject(new Person(20,"huangbiao"));
oos.close();
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("c:\\Person.object"));
Person person = (Person)ois.readObject();
序列号是由属性、方法计算出来的,如果属性或者是方法改变,则序列号也变了,如果读对象要捕捉找不到类的异常,当然也可以指定对象的序列号,就能找到对象
eg: public static final long serializableUID = 42L;