JAVA反射

反射

反射概述

  • 反射是指对于任何一个Class类,在运行的时候都可以得到这个类的全部成分。
  • 在运行时,可以得到这个类的构造器对象:Constructor
  • 在运行时,可以直接得到这个类的成员变量对象:Field
  • 在运行时,可以直接得到这个类的成员方法对象:Method
  • 这种运行时动态获取类信息以及动态调用类中成分的能力称为Java语言的反射机制

反射的关键

  • 反射的第一步都是先得到编译后的Class类对象,然后就可以得到Class的全部成分

反射获取类对象

  • 对象.getClass();
  • Class.forName(“路径+包名”)
  • 类名.class

反射获取构造器对象

方法说明
Constructor<>[] getConstructors()返回所有构造器对象的数组(只能拿public的)
Constructor<>[] getDeclaredConstructors()返回所有构造器对象的数组,存在就能拿到
Constructor getConstructor(Class<?>…parameterTypes)返回单个构造器对象(只能拿public)
Constructor getDeclaredConstructor(Class<?>…parameterType)返回单个构造器对象,存在就能拿

Constructor类中用于创建对象的方法

符号说明
T newInstance(Object…intitargs)根据指定构造器创建对象
public void setAccessible(boolean flag)设置为true,表示取消访问检查,进行暴力反射(所有对象皆可暴力)

反射获取成员变量

方法说明
public[] getField()返回所有成员变量对象的数组(只能拿public)
Field[] getDeclaredFields()返回所有成员变量对象的数组,存在就能拿
Field getDeclaredField(String name)返回单个成员变量(只能拿public)
Field getDeclaredField(String name)返回单个成员变量对象,存在就能拿

Field类中用于取值和赋值的方法

方法说明
void set(Object obj,Object value)赋值
Object get(Object obj)取值

反射获取方法对象

方法说明
Method[] getMethods()返回所有方法对象的数组(只能拿public)
Method[] getDeclaredMethods()返回所有方法对象的数组,存在就能拿到
Method getMethod(String name,Class<>…parameterTypes)返回单个成员方法对象(只能拿public)
Method getDeclareMethod(String name,Class<>…parameterTypes)返回单个成员方法对象,存在就能拿到

Method类中用于触发执行的方法

符号说明
Object invoke(Object obj,Object…args)运行方法。参数一:用obj对象调用该方法;参数二:调用方法的传递参数(没有不写);参数三:方法的返回值:方法的返回值(如果没有就不写)

反射的作用——绕过编译阶段为集合添加数据

反射的作用——通用框架的底层原理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值