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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 a12366456 于 2015-7-25 23:50 编辑

反射代码:
  1. public class Run {

  2.         public Run() {
  3.                 // TODO Auto-generated constructor stub
  4.         }

  5.         public static void main(String[] args) {
  6.                 try {
  7.                         Class<?> clazz = Class.forName("com.drz.jicheng.Zi");
  8.                         Constructor<?> constructor = clazz.getConstructor();
  9.                         Object zi = constructor.newInstance();
  10.                         Field[] fields = clazz.getDeclaredFields();
  11.                         System.out.println("fields.length=" + fields.length);
  12.                         for (Field field : fields) {
  13.                                 field.setAccessible(true);
  14.                                 System.out.println(field.getName() + "=" + field.get(zi));
  15.                         }
  16.                         Field priField = clazz.getDeclaredField("itt");
  17.                         priField.setAccessible(true);
  18.                         System.out.println("itt=" + priField.get(zi));
  19.                 } catch (ClassNotFoundException e) {
  20.                         // TODO Auto-generated catch block
  21.                         e.printStackTrace();
  22.                 } catch (NoSuchMethodException e) {
  23.                         // TODO Auto-generated catch block
  24.                         e.printStackTrace();
  25.                 } catch (SecurityException e) {
  26.                         // TODO Auto-generated catch block
  27.                         e.printStackTrace();
  28.                 } catch (InstantiationException e) {
  29.                         // TODO Auto-generated catch block
  30.                         e.printStackTrace();
  31.                 } catch (IllegalAccessException e) {
  32.                         // TODO Auto-generated catch block
  33.                         e.printStackTrace();
  34.                 } catch (InvocationTargetException e) {
  35.                         // TODO Auto-generated catch block
  36.                         e.printStackTrace();
  37.                 } catch (NoSuchFieldException e) {
  38.                         // TODO Auto-generated catch block
  39.                         e.printStackTrace();
  40.                 }
  41.         }

  42. }
复制代码


父类代码:
  1. class Fulei_private {
  2.         private int itt = 3;

  3.         public Fulei_private() {
  4.                 // TODO Auto-generated constructor stub
  5.         }

  6.         public Fulei_private(int i) {
  7.                 this.itt = i;
  8.         }

  9.         public int getItt() {
  10.                 return itt;
  11.         }

  12.         public void setItt(int itt) {
  13.                 this.itt = itt;
  14.         }

  15. }
复制代码

子类代码:
  1. class Zi extends Fulei_private {
  2.         private int ziX = 7;

  3.         public Zi() {
  4.                 // TODO Auto-generated constructor stub
  5.         }

  6.         public Zi(int i) {
  7.                 super(i);
  8.                 // TODO Auto-generated constructor stub
  9.         }

  10.         public int getZiX() {
  11.                 return ziX;
  12.         }

  13.         public void setZiX(int ziX) {
  14.                 this.ziX = ziX;
  15.         }

  16. }
复制代码

运行会报告没有这个字段的异常:
java.lang.NoSuchFieldException: itt
        at java.lang.Class.getDeclaredField(Class.java:1953)
        at com.drz.jicheng.Run.main(Run.java:30)


2 个回复

倒序浏览
还没学到反射,不过听说的关于这个的不少
回复 使用道具 举报
:victory::victory:
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马