Skip to content

Reflection

Calvin Xiao edited this page Jan 20, 2017 · 2 revisions

#反射

##1. Class信息

##2. 反射调用

提供反射调用函数和getter/setter函数以及直接绕过getter/setter直接访问属性的能力。
无视private/protected/public修饰符的关键是Class.getDeclaredMethods()函数,它与Class.getMethods()比,能返回private的函数,但只能返回当前类的(不会继承于父类的函数一起返回),然后可以method.setAccessible(true)来强制转换,当然,这并不总是成功,因为SecurityManager有时候会干预。

提供反射获取Class声明中的泛型参数,例子是public UserDao extends HibernateDao,获得User.class.注意这个User是定义在父类旁边的,这也是Java泛型中唯一能反射获得Class的地方。