首页 > 其他 > 详细

Java的反射机制

时间:2014-03-09 00:06:31      阅读:470      评论:0      收藏:0      [点我收藏+]

一、可以打破对象的封装

 1. ①获得对象的Class对象(三个方法)

    a)使用Class类的静态方法 forName; Class.forName("java.lang.String");

    b)使用类的.class语法  Srting.class;

    c)使用对象的getClass方法 String s = "aa";    Class<?> cla = s.getClass();

  2. ①若想通过类的不带参数的构造方法来生成对象,我们有两种方式:
    a) 先获得 Class 对象,然后通过该 Class 对象的 newInstance()方法直接生成即可:
      Class<?> classType = String.class;
      Object obj = classType.newInstance();
    b) 先获得 Class 对象,然后通过该对象获得对应的 Constructor 对象,再通过该 Constructor
      对象的 newInstance()方法生成:
      Class<?> classType = Customer.class;
      Constructor cons = classType.getConstructor(new Class[]{});
      Object obj = cons.newInstance(new Object[]{});
  ② 若想通过类的带参数的构造方法生成对象,只能使用下面这一种方式:
      Class<?> classType = Customer.class;
      Constructor cons = classType.getConstructor(new Class[]{String.class, int.class});
      Object obj = cons.newInstance(new Object[]{“hello”, 3});

  3.①获取对象的所有成员变量 通过Class对象的getDeclareFields(); 返一个Field[];

   获取指定的成员变量 通过Class对象的getDeclareField("name"); 返回field对象

  ②获取对象的所有方法 通过Class对象的getDeclareMethods(); 返一个Method[];

   获取指定的方法 通过Class对象的getDeclareMethod("name"); 返回fMethod对象

 4.      setAccessible(boolean flag)
           Set the accessible flag for this object to the indicated boolean value.

    method.setAccessible(true);//压制Java的访问控制检查

    field.setAccessible(true);//压制Java的访问控制检查

  

Java的反射机制,布布扣,bubuko.com

Java的反射机制

原文:http://www.cnblogs.com/xxx-xxx/p/3588817.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!