反射获取构造器对象
获取对象 | 说明 |
Constructor<?>[] getConstructors() | Public,返回所有构造器对象的数组 |
Constructor<?>[] getDeclaredConstructors() | 返回所有构造器对象的数组,存在就能拿到
|
Constructor<T> getConstructor (Class<?>... parameterTypes) | Public,返回单个构造器对象
|
Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes) | 返回单个构造器对象,存在就能拿到
|
Constructor类中用于创建对象的方法
方法 | 说明 |
T newInstance (Object... initargs) | 是public,根据指定的构造器创建对象 |
public void setAccessible (boolean flag) | 非public,设置为true,表示取消访问检查,进行暴力反射 |
反射获取成员变量对象
获取对象 | 说明 |
Field[] getFields() | public 返回所有成员变量对象的数组 |
Field[] getDeclaredFields()
| 返回所有成员变量对象的数组,存在就能拿到 |
Field getField(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 getDeclaredMethod (String name, Class<?>... parameterTypes) | 返回单个成员方法对象,存在就能拿到
|
Method类中用于触发执行的方法
方法 | 说明 |
Object invoke(Object obj, Object... args)
| 参数一:用obj对象调用该方法 参数二:调用方法的传递的参数(如果没有就不写) 返回值:方法的返回值(如果没有就不写) |
注解的解析
获取对象 | 说明 |
Annotation[] getDeclaredAnnotations() | 获得当前对象上使用的所有注解,返回注解数组 |
T getDeclaredAnnotation (Class<T> annotationClass) | 根据注解类型获得对应注解对象
|
boolean isAnnotationPresent (Class<Annotation> annotationClass) | 判断当前对象是否使用了指定的注解,如果使用了则返回true,否则false |
元注释 | |
@Target
中可使用的值定义在ElementType枚举类中,常用值如右 | TYPE 类,接口 FIELD 成员变量 METHOD 成员方法 PARAMETER 方法参数 CONSTRUCTOR 构造器 LOCAL_VARIABLE 局部变量 |
@Retention
中可使用的值定义在RetentionPolicy枚举类中,常用值如下
| SOURCE 注解只作用在源码阶段,生成的字节码文件中不存在 CLASS 注解作用在源码阶段,字节码文件阶段,运行阶段不存在,默认值 RUNTIME 注解作用在源码阶段,字节码文件阶段,运行阶段(开发常用) |