记录
| 日期 | 说明 |
|---|---|
| 2023/1/1 | 首次创建 |
| 2023/2/18 | 增加运行时类信息 |
总纲
关于反射的一些概念总结
基础概念
- 如果方法或变量不是public,需要调用
setAccessible(true) - 功能
- 在运行时判断任意一个对象所属的类
- 在运行时构造任意一个类的对象
- 在运行时判断任意一个类锁具有的成员变量和方法
- 在运行时电泳任意一个对象的方法
- 用途:开发各种通用框架
- 重点:invoke
创建实例
- 使用class对象的newInstance方法
- 先获取Constructor对象,再调用Constructor对象的newInstance方法
Constructor构造器
getConstructor:只能获得public权限的构造方法getDeclaredConstructor:可以获得任何访问权限的构造方法getConstructors:获得所有public访问权限的构造方法getDeclaredConstructors:获得全的构造方法
field变量
getDeclaredFieldsgetFieldsgetDeclaredFieldgetField
method方法
getDeclaredMethodgetMethodgetDeclaredMethodsgetMethods
isInstance
instanceOf
class对象
- class对象的静态方法:forName
- 直接获取某个对象的class:int class、Integer.TYPE
- 调用对象的方法:getClass
泛型类型
- getGenericParameterTypes
- getRawType
- getActualTypeArguments
运行时类信息
其他
- 修饰符:getModifiers
- 类名:getName、getSimpleName
- 包信息:getPackage
- 父类:getSuperClass
- 接口:getInterfaces