java注解

java.Annotation
注解作用
1.对程序做出解释
2.可以被其他程序读取

内置注解

  1. @Override 重写
  2. @Deprecated 不建议使用方法已过时
  3. @SuppressWarning("all") 抑制编译时警告信息
  4. @FunctionalInterface 函数式接口

元注解(负责注解其他注解的注解)
四个标准的meta-annotation类型

  • @Target:用于描述注解的作用范围
  • @Retention:用于描述注解的生命周期
  • @Documented:说明该注解将会包含在javadoc中
  • @Inherited:说明子类可以被继承父类中的该注解
import java.lang.annotation.*;
@myanoation("")
public class Test01 {
    @Override
    @Deprecated
    @SuppressWarnings("all")
    public String toString(){
        return "dssf";
    }
}
@Target({ElementType.TYPE,ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@interface myanoation{
    String name() default "";
    String value();
}

Rentention注解类

注解的生命周期:Java源文件->class文件—>内存中的字节码。
编译或者运行时,都有可能会取消注解。
Rentention的3种取值意味让注解保留到哪个阶段,RententionPolicy.SOURCE、RententionPolicy.CLASS(默认值)、RententionPolicy.RUNTIME。
Target注解类

性质和Rentention一样,都是注解类的属性,表示注解类应该在什么位置,对哪一块的数据有效。例如,@Target(ElementType.METHOD)
Target内部的值使用枚举ElementType表示,表示的主要位置有:注解、构造方法、属性、局部变量、函数、包、参数和类(默认值)。
TYPE:类、接口(包括注解类型)和枚举的声明
FIELD:字段声明(包括枚举常量)
METHOD:方法声明
PARAMETER:参数声明
CONSTRUCTOR:构造函数声明
LOCAL_VARIABLE:本地变量声明
ANNOTATION_TYPE:注解类型声明
PACKAGE:包声明
TYPE_PARAMETER:类型参数声明,JavaSE8引进,可以应用于类的泛型声明之处
TYPE_USE:JavaSE8引进,此类型包括类型声明和类型参数声明,是为了方便设计者进行类型检查,例如,如果使用@Target(ElementType.TYPE_USE)对@NonNull进行标记,则类型检查器可以将@NonNull class C {...} C类的所有变量都视为非null

https://www.jianshu.com/p/3d43631122bd

posted @ 2021-11-23 10:10  一刹流云散  阅读(25)  评论(0编辑  收藏  举报