黑马程序员技术交流社区

标题: 用对象读取流如何读取一个Object文件 [打印本页]

作者: mengxiang1993    时间: 2015-2-28 13:22
标题: 用对象读取流如何读取一个Object文件
当我们想读取一个别人的Object的文件时,但却不知道它是哪个类的对象写入到该文件,前提是别人也没有告诉我们,没有关系,用记事本打开文件,你会看到一堆乱码,如下:
看到day21.Person,这就是这个类完整的类名,day21是包名

  1. public static void readObj() throws Exception {

  2.                 ObjectInputStream ois = new ObjectInputStream(new FileInputStream(
  3.                                 "obj.txt"));

  4.                 Person p = (Person) ois.readObject();

  5.                 System.out.println(p);

  6.         }
复制代码
这里我图省事,重写了Person 的toString 方法,但大多数情况下别人是没有帮你重写这个方法。
所以这里我们想要获取他的属性和方法就要通过反射来做。
代码如下:
  1.         public static void readObj() throws Exception {

  2.                 ObjectInputStream ois = new ObjectInputStream(new FileInputStream(
  3.                                 "obj.txt"));

  4.                 Person p = (Person) ois.readObject();
  5.                 Constructor[] con=  p.getClass().getDeclaredConstructors();
  6.        
  7.                
  8.                 for (int i = 0; i < con.length; i++) {
  9.                         System.out.println(con[i].getName());
  10.                 }
  11.                
  12.                 Method[] m = p.getClass().getDeclaredMethods();
  13.                 for (int i = 0; i < m.length; i++) {

  14.                         System.out.println(m[i].getName());
  15.                 }
  16.                 Field[] fields = p.getClass().getFields();

  17.                 for (int i = 0; i < fields.length; i++) {

  18.                         System.out.println(fields[i].get(p));
  19.                 }

  20.         }
复制代码








      











欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2