java 之反射 reflection源码分析
文章目录
一、Class
1.1 class定义
继承和实现
AnnotatedElement
注解信息
类的分类
- ANNOTATION 注解
- ENUM 枚举
- SYNTHETIC 编译器生成的类,比如内部类
Type 接口
对象类型的定义
- 只有一个方法
String getTypeName();
-
ParameterizedType
参数化类型,即泛型;例如:List、Map<K,V>等带有参数化的对象 -
TypeVariable
类型变量,即泛型中的变量;例如:T、K、V等变量,可以表示任何类;在这需要强调的是,TypeVariable代表着泛型中的变量,而ParameterizedType则代表整个泛型; -
GenericArrayType
泛型数组类型,用来描述ParameterizedType、TypeVariable类型的数组;即List[] 、T[]等;
成员
- 构造器的信息
- classloader的信息
- name信息
- filed信息
- method信息
- 继承和实现的类信息
注意 getDeclaredClasses()
,是返回所有声明过的,而getClasses()
只是公有方法。
二、Member
封装了class的三种内容信息的模型。
AccessibleObject
负责权限控制的对象,pulic或者privte类实现和继承
Modifier 对权限修饰符编解码
例如
2.1 Fields
定义了field访问方式
2.2 methods
和field大同小异