黑马程序员技术交流社区
标题:
用对象读取流如何读取一个Object文件
[打印本页]
作者:
mengxiang1993
时间:
2015-2-28 13:22
标题:
用对象读取流如何读取一个Object文件
当我们想读取一个别人的Object的文件时,但却不知道它是哪个类的对象写入到该文件,前提是别人也没有告诉我们,没有关系,用记事本打开文件,你会看到一堆乱码,如下:
QQ图片20150228123419.jpg
(64.97 KB, 下载次数: 0)
下载附件
2015-2-28 12:34 上传
看到day21.Person,这就是这个类完整的类名,day21是包名
public static void readObj() throws Exception {
ObjectInputStream ois = new ObjectInputStream(new FileInputStream(
"obj.txt"));
Person p = (Person) ois.readObject();
System.out.println(p);
}
复制代码
这里我图省事,重写了Person 的toString 方法,但大多数情况下别人是没有帮你重写这个方法。
所以这里我们想要获取他的属性和方法就要通过反射来做。
代码如下:
public static void readObj() throws Exception {
ObjectInputStream ois = new ObjectInputStream(new FileInputStream(
"obj.txt"));
Person p = (Person) ois.readObject();
Constructor[] con= p.getClass().getDeclaredConstructors();
for (int i = 0; i < con.length; i++) {
System.out.println(con[i].getName());
}
Method[] m = p.getClass().getDeclaredMethods();
for (int i = 0; i < m.length; i++) {
System.out.println(m[i].getName());
}
Field[] fields = p.getClass().getFields();
for (int i = 0; i < fields.length; i++) {
System.out.println(fields[i].get(p));
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2