一. 常用注解
@SuppressWarnings("all") //压制所有警告
@Override //是否重写方法
@Deprecated //方法已过时
二. 自定义注解
public @Intface 注解名称{ 属性列表 }
注解本质是默认继承了Annotation接口(反编译可见javap)
属性:接口中的抽象方法
1. 属性返回值
a. 基本数据类型
b. String
c. 枚举
d. 注解
e. 以上类型的数组
2. 使用注解时要给属性赋值
a. 定义注解时,可以使用default关键字给属性默认值
b. 如果只有一个属性需要复制,且属性名是value,则可以省略
c. 数组赋值时,使用{}包裹,如果只有一个值,则可以省略{}
例:
定义注解
public @Intface A{ String[] str() ;int age() default 18; }
使用注解
@A(str={"a","b"})
public class B{}
三. 元注解
@Target({ElementType=TYPE}) 描述能够作用的位置
ElementType取值范围:
TYPE:作用于类上
METHOD:可以作用于方法上
FIELD:可以作用于成员方法上
@Retention(RetentionPolicy.RUNTIME) 描述注解被保留的阶段
RetentionPolicy取值范围:
RUNTIME:注解会保留到class字节码文件中,并被jvm读取到
CLASS:注解会保留到class字节码文件中,但不会被jvm读取到
SOURCE:注解不会保留到class文件中
@Documented 描述注解是否被抽取到Api文档中(javadoc)
@Inherited 描述注解是否可以被子类继承