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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李刚 中级黑马   /  2012-11-25 09:53  /  1712 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 古银平 于 2012-11-25 16:36 编辑

自己定义的Person类。将Person对象放入文件1.txt中,然后从文件中读取出来,问题——显示的是com.day21.Person@10b30a7,而不是lisi  23.
public class Person implements Serializable{
        public static final long serialVersionUID=42L;
   private String name;
   int age;
   public Person(String name,int age){
           this.name=name;
           this.age=age;
   }
   public String ToString(){
           return name+"::"+age;
   }
}


public class ObjectStreamDemo {

        /**
         * @param args
         * @throws Exception
         */
        public static void main(String[] args) throws Exception {
                // TODO Auto-generated method stub
       //writerObj();  //将Person对象写入方法
       readObj();      //将对象读取出的方法
        }
    public static void readObj() throws Exception{
            ObjectInputStream ois=new ObjectInputStream(new FileInputStream("E:/1.txt"));
        Person p=(Person) ois.readObject();
        System.out.println(p);
      
        ois.close();
    }
    public static void writerObj() throws Exception{
            ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream("E:/1.txt"));
       oos.writeObject(new Person("lisi",23));
       oos.close();
    }
   
}

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

4 个回复

倒序浏览
oos.writeObject(new Person("lisi",23));读进去的的是Person的地址
回复 使用道具 举报
     System.out.println(p); 输入的对象的引用地址,如果想输入lisi  23. 应调用p.toString();
     你Person 类的ToString方法是不是想重写父类的toString()方法,T应该小写。如果你不是想重写父类的方法,而是自己定义的方法,你输出时应该调用p.ToString()啦

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
你如果在writerObj()方法中 也输出System.out.println(p);  比较readObj()方法中输出的System.out.println(p) ,
你可以发现这个两个p对象的地址是不同的,读出来的对象和写进去的不是一个对象 地址不同,我理解为相当于进行了深克隆
回复 使用道具 举报
谢谢大家了,问题已经解决。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马