黑马程序员技术交流社区
标题:
ObjectOutputStream 问题?
[打印本页]
作者:
陈浩
时间:
2011-12-24 09:49
标题:
ObjectOutputStream 问题?
本帖最后由 love风之吻浩 于 2011-12-24 16:03 编辑
我在运行ObjectOutputStream时碰到一点问题:
下面是代码:
import java.io.*;
public class OutputStreamDemo3 {
public static void main(String []args)throws IOException,ClassNotFoundException
{
//writeobj();
readobj();
}
/*public static void writeobj()throws IOException
{
ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream("b.txt"));
oos.writeObject(new People1("zhangsan",99));
oos.close();
}*/
public static void readobj()throws IOException,ClassNotFoundException
{
ObjectInputStream ois=new ObjectInputStream(new FileInputStream("b.txt"));
People1 p=(People1)ois.readObject();
System.out.println(p);
ois.close();
}
下面是People1 的代码:
import java.io.*;
class People1 implements Serializable{
private String name;
private int age;
People1(String name,int age)
{
this.name=name;
this.age=age;
}
public String toString()
{
return name+":"+age;
}
}
我感到比较奇怪的是,如果把这段代码中的toString()
public String toString()
{
return name+":"+age;
}
替换成别的方法名,那么从主函数中打印的就不是zhangsan:99;
而是:day21.People1@fa7e74(day21是包名);请问诸位能否解释一下?
}
作者:
黑马巩伟伟
时间:
2011-12-24 09:56
public String toString()
这个方法是覆写了父类的toString方法,方法名必须要一样。如果写成其他名,那就是你自己新定义的。
作者:
刘博
时间:
2011-12-24 10:08
你可以看下Object类中的String方法,是默认打印地址的,所以要重写,如果你不重写打印的就会是地址;
作者:
王昌盛
时间:
2011-12-24 10:18
输出时自动调用其toString()方法,如果改了名,本类没有toString方法时调用其父类的,依次往上找
我查了一下,其父类OutputStream也没覆写toString方法,再往上就是Object类
Object类toString方法的返回值为
getClass().getName() + '@' + Integer.toHexString(hashCode())
作者:
陈浩
时间:
2011-12-24 15:36
谢谢各位!我懂了!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2