-
注解:
和class,interface等平级
注解给计算机看的.
作用:
1.执行编译器的检查
2.分析代码(替代配置文件) -
jdk中的三个注解;
1.@Override:声明该方法是重写的方法
2.@Deprecated:声明该方法不推荐使用
2.1)有新方法替代
2.2)这个方法有问题
3.@SuppressWarnings:压制警告
3.1)@SuppressWarnings(“all”):抑制所有警告 -
自定义注解
语法:
@interface 注解名{}
使用注解
直接在目标上添加
@注解名
本质上也是一个接口,接口中就可以定义变量(常量)和方法了,注解中的方法叫做注解属性
注解属性的类型:(6种)
基本类型
String
Class
Annotation
Enum
以上类型的一维数组
注意:
若注解有属性,使用的时候,注解属性必须有值 -
注解属性赋值的时候注意事项;
- 注解属性的赋值:
- 若属性不是数组类型
- 若只有一个属性
@注解(属性名 = 值)
例如:@MyAnnotation3(i = 12) - 若有多个个属性
@注解(属性名 = 值,属性名2 = 值2)
例如:@MyAnnotation3(i = 12, s = “hello”)
- 若只有一个属性
- 属性类型为数组的时候
- 格式:
@注解名(属性={值1,值2}) - 若属性类型为数组,且只有一个值可以有如下两种写法
@MyAnnotation4(ii = { 0 })
@MyAnnotation4(ii = 0) - 若有多个个属性,用逗号隔开
若只有一个属性且属性名为value的时候,使用的时候可以省略value,若有多个属性的时候,不能省略属性名
注解属性可以设置默认值
属性类型 属性名() default 值;
例如:
int i() default 6;
- 格式:
- 若属性不是数组类型
- 注解属性的赋值:
-
注解的元注解
定义在注解上的注解- @Target:定义该自定义的注解作用在什么上面
值是枚举类型
常用的:
METHOD:方法上
TYPE:类 接口等
FIELD:字段 - @Retention:定义该自定义注解保留到那个阶段
值为枚举类型:
常用的:
SOURCE:源码上
CLASS:源码上和字节码文件上
RUNTIME:所有的阶段都保存
- @Target:定义该自定义的注解作用在什么上面