java注解
java.Annotation
注解作用
1.对程序做出解释
2.可以被其他程序读取
内置注解
- @Override 重写
- @Deprecated 不建议使用方法已过时
- @SuppressWarning("all") 抑制编译时警告信息
- @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