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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

©   /  2018-5-12 15:02  /  11685 人查看  /  97 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

万冕

反射是能够操作任意的成员的一种强大的类 ,不同于我们之前学的getter,setter方法和创建类的对象来调用成员方法,反射能更加方便.


反射直接创建需要获取的类的字节码对象,有了字节码对象,就能获取到成员与有参无参构造.

class类中:  {

获取构造(Constructor):

字节码对象.newInstance与 getConstructor返回的对象.newInstance一样可以获取无参构造,但是字节码对象.newInstance只能获取无参构造

有参构造的括号里传入的是数据类型.class形式传入



获取成员变量(Field):

用field获取私有成员变量时,需要注意要把避开检测开启 field对象.setAccessible;



获取成员方法(getmethod)


需要方法对象.invoke才能执行成员方法,invoke括号里第一个传入的是调用的方法所在的类的对象,第二个如果有参则传入需要赋值的参数,无参则不用填写

调用私有成员方法时,和调用私有成员变量相同

调用有参的方法括号里第一个传入的是方法名,第二个也是传入数据类型.class形式.

如果方法有返回值,则要创建object对象来接收,在输出object对象;

             }


Field类:

大致上与getter,setter

通过Field对象.get 可以获得传入的对象中当前字段的值

通过Field对象.set 可以设置传入的对象中当前字段的值


BeanUtils类

主要是拿来封装数据

三个重要的方法

static void        setProperty(Object bean, String name, Object value) 给bean对象的成员变量赋值

static String        getProperty(Object bean, String name)  获取bean对象的成员变量的值

static void        populate(Object bean, Map properties) 利用map集合key(要赋值的成员变量名字)所对应的value(需要赋值的参数)给成员变量赋值
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马