20220810 第一组 于芮 注解与反射(第二十九天)
注解和反射
注解(annotation)java标注,JDK5引入的机制,
java中的类,方法,变量,参数,包都可以被标注
元注解:专门给注解加的注解
注解中可以有方法
1.定义方法的格式:String name();
2.可以有默认值,也可没有,如果没有默认值,使用的时候必须填写对应的值,如果有默认值,使用default指定默认值
3.如果想在使用的时候不指定具体的名字,可以使用方法名value
在java整个注解体系中,三个重要的主干类
1.annotation:接口,定义一些常用的方法
2.elementtype:枚举
3.retentionpolicy:枚举,用来指定注解的策略,不同类型的策略指定注解的作用域不同
(1)source:注解仅存在于编译期处理期间,编译期处理完之后,注解无效
(2)class:注解在.class文件中依然有效,不管是在编译期还是在运行期
(3)runtime:编译期无效,只有在运行期才由JVM读取
java自带的注解(10个,其中4个是java.lang.annotation包,剩下6个在java.lang)
作用在代码上的注解
1.@override检查该方法是否是重写方法,如果返现其父类,或者引用的接口中没有该方法,会报错
2.@deprecated 标记的方法,过时的方法
3.@suppresswarnings编译期忽略警告
4.@safevarargs忽略任何使用参数为泛型变量的方法或构造器产生的警告
5.@functioninterface函数式接口,表示一个接口为函数式接口,JDK8开始
6.@repeatable表示某个注解在同一个声明上使用多次
all忽略所有警告
boxing忽略装箱,拆箱
rowtype使用生成时没有指定数据类型
unchecked忽略没有进行类型检查操作的警告
unused:忽略没有使用的警告
元注解
1.@retention 表示这个注解的作用域
2.@documented表示这个注解是否包含在用户文档中
3.@target这个注解可以修饰哪些信息
4@inherited如果一个类用上了这个注解,那么其子类也会继承这个注解
反射
class类(泛型类)
1.直接使用.class
2.使用全类名
3.使用对象