• java 注解


    java.lang.annotation包
    Annotation的基本原则:Annotation不能影响程序代码的执行,无论增加、删除Annotation,代码都始终如一的执行
    元注解:负责注解其他的注解
    @Documented
    @Inherited
    @Retention
    @Target
    -------------------------------------------------------------------------------
    @Target
    用于描述Annotatiion的范围
    取值有:
    java.lang.annotation.ElementType
    TYPE:类,接口(包括注解),枚举
    FIELD:域(包括枚举常量)
    METHOD:方法
    PARAMETER:参数
    CONSTRUCTOR:构造方法
    LOCAL_VARIABLE:局部变量
    ANNOTATION_TYPE:注解类型
    PACKAGE:包
    例子:

    @Target(ElementType.TYPE)
    public String className();
    public @interface TargetTest {
    }


    *******************************************************************************
    @Retention
    用于描述Annotation的生命周期
    取值有:
    java.lang.annotation.RetentionPolicy
    SOURCE:源文件有效
    CLASS:在Class文件中有效
    RUNTIME:在运行时有效,可通过反射获取内容
    例子:

    @Target(ElementType.TYPE)
    @Retention(RetentionPolicy.RUNTIME)
    public @interface AnnonitionTargetTest {
    }


    *******************************************************************************
    @Documented
    用于描述Annotation被JavaDoc
    例子:

    @Target(ElementType.TYPE)
    @Retention(RetentionPolicy.RUNTIME)
    @@Documented 则
    public @interface AnnonitionTargetTest {
    }


    生成javaDoc后调用@AnnonitionTargetTest 的类、方法等会出现@AnnonitionTargetTest,如果没有@Documented 则调用@AnnonitionTargetTest 的类、方法等不会出现@AnnonitionTargetTest
    *******************************************************************************
    @Inherited
    用于描述Annotation可以被继承
    如果一个使用了@Inherited修饰的annotation类型被用于一个class,则这个annotation将被用于该class的子类。
    注意:@Inherited annotation类型是被标注过的class的子类所继承。不从接口继承annotation,方法并不从重载的方法继承annotation
    例子:

    @Target(ElementType.TYPE)
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @Inherited
    public @interface AnnonitionTargetTest {
    }


    *******************************************************************************
    自定义注解
    格式:
    public @interface 注解名{定义体}
    注解参数的可支持数据类型:
    1.所有基本数据类型
    2.String类型
    3.Class类型
    4.enum类型
    5.Annotation类型
    6.以上所有类型的数组
    访问修饰符只有public 和default
    如果只有一个参数成员,最好把参数名称设为"value",后加小括号
    *******************************************************************************
    注解处理器类:java.lang.reflect.AnnotatedElement
    它的实现类:
    java.lang.Class类,java.lang.reflect.Filed类,java.lang.reflect.Constructor类,java.lang.reflect.Method类,java.lang.Package类
    <T extends Annotation> T getAnnotation(Class<T> annotationClass); 返回改程序元素上存在的、指定类型的注解,如果该类型注解不存在,则返回null。
    Annotation[] getAnnotations();返回该程序元素上存在的所有注解。
    boolean isAnnotationPresent(Class<? extends Annotation> annotationClass);判断该程序元素上是否包含指定类型的注解,存在则返回true,否则返回false.
    Annotation[] getDeclaredAnnotations();返回直接存在于此元素上的所有注释。与此接口中的其他方法不同,该方法将忽略继承的注释。(如果没有注释直接存在于此元素上,则返回长度为零的一个数组。)该方法的调用者可以随意修改返回的数组;这不会对其他调用者返回的数组产生任何影响。
    *******************************************************************************

    图片来源于网络

  • 相关阅读:
    基于C#的Cs架构简单开发一花店的售卖系统4
    基于C#的Cs架构简单开发一花店的售卖系统3
    基于C#的Cs架构简单开发一花店的售卖系统2
    基于C#的Cs架构简单开发一花店的售卖系统1
    经典阅读-构建之法
    自动执行后端方法的界面设计方式
    jsp页面采用超链接标签传值方式及注意事项
    经典阅读-构建之法
    基于springboot+mybatis+echarts实现数据可视化
    eclipse 搭建hadoop开发环境,并连接虚拟机hadoop-2.5.2,运行wordcount
  • 原文地址:https://www.cnblogs.com/imeng/p/4023125.html
Copyright © 2020-2023  润新知