A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 贾振凯 中级黑马   /  2013-4-3 22:25  /  1079 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 贾振凯 于 2013-4-3 23:40 编辑
  1. public class Person implements Serializable{
  2. private static final long serialVersionUID = 1L;
  3. private static final Person p = new Person("jzk",1);;
  4. private String name;
  5. private int age;

  6. private Person(String name, int age) {
  7.           this.name = name;
  8.           this.age = age;
  9. }
  10. public static Person getInstance(){
  11.           return p;
  12. }
  13. public String getName() {return name;}
  14. public int getAge() {  return age;}

  15. private Object writeReplace()throws ObjectStreamException{
  16.           return new Dog("旺财");         //此处将序列化的对像用Dog来替换                                         }

  17. private Object readResolve()throws ObjectStreamException{
  18.           return new Person("jkk",2);    //此处读取的时候用new Person("jkk",2)来替换读取的对像值      
  19. }
  20. }
复制代码
  1. public class SerializeOperate {
  2. public static void main(String[] args){
  3.   
  4.   ObjectOutputStream oos = null;
  5.   ObjectInputStream ois = null;
  6.   
  7.   try {
  8.    
  9.    oos = new ObjectOutputStream(new FileOutputStream("E:\\serialize.txt"));
  10.    ois = new ObjectInputStream(new FileInputStream("E:\\serialize.txt"));
  11.    oos.writeObject(Person.getInstance());
  12.    //根据上面的注释的理解,,,,,,,,,,,,这个地方为什么会报ClassCastException?????????????????////
  13.    System.out.println(Person.getInstance()==(Person)ois.readObject());  
  14.   
  15.   } catch (IOException e) {
  16.    e.printStackTrace();
  17.    throw new RuntimeException("序列化异常!");
  18.   } catch (ClassNotFoundException e) {
  19.    e.printStackTrace();
  20.    throw new RuntimeException("反序列化异常!");
  21.   }finally{
  22.    try {
  23.     if(oos != null)
  24.      oos.close();
  25.    }catch (IOException e) {
  26.     throw new RuntimeException("关闭列化流异常!");
  27.    }
  28.    try {
  29.     if(ois != null)
  30.      ois.close();
  31.    }catch (IOException e) {
  32.     throw new RuntimeException("关闭反序列化流异常!");
  33.    }
  34.   }
  35. }
  36. }
复制代码

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马