-
能够通过反射技术获取Class字节码对象(重点)
class文件对象的三种获取方式:
1.可以使用Object类中的方法getClass()来获取
Class<?> getClass() 返回此 Object 的运行时类。
2.可以使用类名.class属性的方式获取
java为每种数据类型(基本数据类型4类8种,引用数据类型(数组,类,接口))都赋予了一个class属性
int.class,String.class,Person.class,ArrayList.class
3.可以使用Class类中的静态方法forName()来获取
static Class<?> forName(String className) 返回与带有给定字符串名的类或接口相关联的 Class 对象。
参数:
tring className:全类名(包名+类名) -
能够通过反射技术获取构造方法对象,并创建对象。
1.获取对应类的class文件对象
2.使用class文件对象中的方法getConstructor(“参数”)/getConstructors()获取构造方法Constructor
3.使用构造方法Constructor中的方法newInstance实例化对象简化格式:(重点)
1.获取类的class文件对象
2.使用class文件对象中的方法newInstance实例化对象 -
能够通过反射获取成员方法对象,并且调用方法。(重点)
1.获取类对应的class文件对象
2.通过class文件对象中的方法getMethod(参数)/getMethods()获取类中的成员方法Method
3.使用Method类中的方法invoke执行获取到的成员方法 -
能够通过反射获取属性对象,并且能够给对象的属性赋值和取值(了解)。
1.获取Person类的class文件对象
2.使用class文件对象中的方法getField/getFields获取类中的成员变量Field
3.使用Field类中的方法set给成员变量赋值,get获取成员变量的值 -
能够说出注解的作用
1.使用javadoc.exe生成帮助文档:里边可以包含注解@author和@version
2.编译检查:@Override @FunctionalInterface -
能够自定义注解和使用注解(重点)
定义格式:
public @interface 注解名称{
修饰符 返回值类型/数据类型 属性名();
修饰符 返回值类型/数据类型 属性名() default 属性值;
}
使用格式:
没有属性:@注解名
有属性:@注解名(属性名=属性值,属性名=属性值…) -
能够说出常用的元注解及其作用(重点)
java.lang.annotation.Retention:用来声明自定义注解的生命周期(.java文件,.class文件,内存中)
java.lang.annotation.Target:用来声明自定义注解可以使用的位置 -
能够解析注解并获取注解中的数据(使用)
就是获取注解的属性值==>使用反射技术
isAnnotationPresent 判断(类上,方法上…)是否有指定的注解
getAnnotation 获取(类上,方法上…)的注解 -
能够完成注解的MyTest案例(重点)
模拟Junit
方法上如果使用了自定义注解@MyTest,就让这个方法执行
方法上如果没有使用自定义注解@MyTest,就不让这个方法执行
22-[注解-反射]
最新推荐文章于 2024-11-18 08:41:09 发布