操作对象
ObjectInputStream与ObjectOutputStream
就是把对象持久化(对象存储到硬盘上),表现形式就是对象文件
持久化对象必须实现Serializable接口
1 public class Person implements Serializable { 2 private String name; 3 private int age; 4 5 public Person() { 6 super(); 7 } 8 9 public Person(String name, int age) { 10 super(); 11 this.name = name; 12 this.age = age; 13 } 14 15 public String getName() { 16 return name; 17 } 18 19 public void setName(String name) { 20 this.name = name; 21 } 22 23 public int getAge() { 24 return age; 25 } 26 27 public void setAge(int age) { 28 this.age = age; 29 } 30 }
一、ObjectOutputStream
1 public static void writeObj() throws IOException { 2 ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream("obj.object")); 3 oos.writeObject(new Person("zhang",13)); 4 oos.close(); 5 }
二、ObjectInputStream
1 private static void readObj() throws IOException, ClassNotFoundException { 2 ObjectInputStream ois=new ObjectInputStream(new FileInputStream("obj.object")); 3 Person p=(Person)ois.readObject(); 4 System.out.println(p.getName()+":"+p.getAge()); 5 }
三、Serializable接口
通过实现java.io.Serializable接口的类,可以启用类的可序列化性。
可序列化性:实现java.io.Serializable接口的类添加一个serialVersionUID
作用:判断序列化的类和反序列化的对象是否是同一版本
强烈建议所有可序列化的类显式声明serialVersionUID值
可序列化性:实现java.io.Serializable接口的类添加一个serialVersionUID
作用:判断序列化的类和反序列化的对象是否是同一版本
强烈建议所有可序列化的类显式声明serialVersionUID值
writeObject方法负责为其特定类写入对象的状态,以便相应的readObject方法可以还原它。(序列化)
readObject方法负责从流中读取并还原类字段。(反序列化)
注意:类的签名以及该类及其所有父类型的非瞬态(transient关键字)和非静态字段的值。