首页>>程序代码>>Java反射获取类的属性及私有方法
Java反射获取类的属性及私有方法
来源: 时间: 2015-02-09 20:23:35

 //获取当期类

     Class c = this.getClass(); //Class.forName(this.getClass().getName())

     //获取当前类及其父类的所有公共属性

     Field[] fields = c.getFields();

     //获取当前类的所有属性

     Field[] fields = c.getDeclaredFields();

     for (Field f : fields)

     {

        System.out.println(f.getName());

     }

     //获取当前类及其父类的所有公共方法

     Method[] methods = c.getMethods();

     //获取当前类的所有方法(公共和非公共的)

     Method[] methods = c.getDeclaredMethods();

     for (Method m : methods)

     {

          System.out.println(m.getName());

      }

     //返回构造器

     Constructor[] constructors = c.getConstructors();

     constructors = c.getDeclaredConstructors();

     for (Constructor m : constructors)

     {

         System.out.println(m);

     }

     //调用有参数方法

     Class ptypes[] = new Class[2];

     ptypes[0] = Class.forName("java.lang.String");

     ptypes[1] = Class.forName("java.util.List");

     Method m = c.getMethod("func",ptypes);

     Object obj = (Object)c.newInstance();

     Object arg[] = new Object[2];

     arg[0] = new String("Hello world");

     List list = new ArrayList();

     list.add("val1");

     list.add("val2");

     arg[1] = list;

     Object r = m.invoke(obj, arg);

     System.out.println(r.toString());

     //调用没有参数方法

     Method m = c.getMethod("func2", null);

     Object obj = (Object)c.newInstance();

     m.invoke(obj, null);

     //调用私有方法

     Method m = c.getDeclaredMethod("func3", null);

     Object obj = (Object)c.newInstance();

     m.invoke(obj, null);

本页地址:http://www.easytd.com/chengxudaima/d_15020920735.html

网友评论留言

验证码 换一张
上一篇:Java HttpURLConnection传递参数和隐藏流 下一篇:Java反射之getFields()和getDeclaredFields()使用区别