JDK四种注解
- @Override:检测该注解标注的方法是否继承于父类
- @Deprecated:该注解标注的内容已过时
- @SuppressWarnings:压制警告,一般传递参数all@SuppressWarnings(“all”)
注解格式
注解由元注解和public @interface 注解名称{属性列表;}组成
-
本质是一个继承Annotation的接口
public interface MyAnno extends java.lang.annotation.Annotation {
}
元注解
-
元注解:用于描述注解的注解
-
@Target:注解能够作用的位置
-
取值 ElementType.TYPE:可以作用于类上
ElementType.METHOD:方法
ElementType.FIELD:成员变量 -
@Retention:描述注解被保留的阶段
-
取值 @Retention(value = RetentionPolicy.RUNTIME):
当前被描述道的注解会保留到class字节码文件中,并被JVM读取到 -
@Documented:注解是否被抽取到api文档中 @Inherited:注解是否被子类继承
注解属性
- 属性:接口中的抽象方法
- 要求:
属性的返回值类型
基本
String
枚举(enum)
注解
及以上类型的数组
定义了属性,在使用时需要给属性赋值
1、使用default给属性初始化值,使用注解时,可以不进行属性赋值
2、如果只有一个属性需要赋值,且该属性名称为value,则直接定义即可
3、数组赋值时,使用{}包裹。数组只有一个值,{}省略不写
解析注解
1、获取注解定义位置的对象(Class、Method Field)
2、获取指定的注解 getAnnotation(Class)
3、调用注解中的抽象方法获取配置的属性值
代码示例
定义一个注解
@Target(value = {
ElementType.TYPE,ElementType.METHOD,ElementType.FIELD})//表示该注解只能作用于类上
@Retention(value = RetentionPolicy.RUNTIME)
@Documented
@Inherited
public @interface MyAnno