Java 学习入门到掌握-四大元注解的高级使用[1]

    技术2022-07-20  70

    @Target

    用于描述注解的使用范围,也就是说使用了@Target去定义一个注解,那么可以决定定义好的注解能用在什么地方

    内部值:ElementType[] value()数组, value值类型 ElementType枚举类型元注解中的枚举值决定了,一个注解可以标记的范围TYPE : 类型上面 用于描述类、接口(包括注解类型) 或enum声明FIELD : 用于描述字段METHOD :方法PARAMETER : 参数 【参数名】CONSTRUCTOR : 构造方法LOCAL_VARIABLE : 局部变量ANNOTATION_TYPE : 可以打在注解上面PACKAGE :可以打在包上面TYPE_PARAMETER : 参数类型【形式参数类型】TYPE_USE : 任何位置都可以

    @Retention

    用于描述一个注解存在的生命周期【源码,字节码文件,运行时】

    内部值:RetentionPolicy value();非数组,意味着只能一个值:值类型:枚举值RetentionPolicy:几个值决定了几个状态:如下几个值SOURCE :表示一个注解可以存在于源码中==>java的源码中CLASS :表示 一个注解可以在源码中,并且可以在字节码文件中RUNTIME :表示 一个注解可以在源码、字节码、及运行时期该注解都会存在

    @Document

    表示该注解是否可以生成到 API文档中 ==》即生成API文档的时 检验

    @Inherited

    表示一个【注解】能够被继承

    不是说注解与注解之间能否相互继承而是说:一个类A被注解了,那么另外一个类B,继承了A类B类能够继承到A类中,的注解 (即被@Inherited注解过的注解) import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; //定义一个标签接口 public interface FunctionAnnotations { //这和标签接口可以在源码、字节码、及运行时期该注解都会存在 @Retention(RetentionPolicy.RUNTIME) //该标签接口可以放在方法上 @Target({ElementType.METHOD}) public static @interface Deterministic {} //这和标签接口可以在源码、字节码、及运行时期该注解都会存在 @Retention(RetentionPolicy.RUNTIME) //该标签接口可以放在类上,也可以放在方法上 @Target({ElementType.TYPE, ElementType.METHOD}) public static @interface NewFunctionAPI {} @Retention(RetentionPolicy.RUNTIME) //该标签接口可以放在类上 @Target({ElementType.TYPE}) public static @interface MathFunction {} }
    Processed: 0.008, SQL: 10