• java注解


    从java5开始,Java支持在源文件中嵌入补充信息,这类信息称为注解annotation。注解不会改变程序的动作,因此也不会改变程序的语义。

    1.注解是基于接口的机制创建的。

    public @interface AnnoDemo {
    String strVal();
    int setVal();
    }
    所有的注解只包含方法声明,没有方法实现;所有注解类型都自动扩展了Annotation接口。
    创建好注解后可以使用声明注解了,可以用于类,方法,成员变量,参数,枚举常量,包括注解本身。

    2.注解的保留策略

    java定义了3种保留策略:SOURCE,CLASS,RUNTIME

    1.使用SOURCE保留策略的注解,只在源文件中保留,在编译期间会被抛弃。

    2.使用CLASS保留策略的注解,在编译后的calss中保留,在jvm运行期间会被抛弃。

    3.使用RUNTIME保留策略的注解,在编译后的calss中保留,在jvm运行期间可以得到这些注解,它提供了永久的注解。

    保留级别通过使用@Retention(RetentionPolicy.XXX)指定,
    如果没有为注解指定保留级别,默认保留级别为RetentionPolicy.CLASS。

    3.使用反射获取注解。

    略。。。

    4.注解的分类。

    1.标记注解
    标记注解不包含成员,唯一的目的是标记声明。
    @Retention(RetentionPolicy.RUNTIME)
    @interface AnnotationMark{}
    2.单成员注解
    单成员注解只有一个成员
    3.内置注解
    Java提供了许多专用内置注解,来自java.lang.annotation包的:
    ①Retention被设计为只能用于注解其它注解,指定保留策略。
    ②@Doucumented是标记接口,用于通知某个工具————注解将被文档化。只能注解其它注解。
    ③@Target 用于指定可以应用注解声明的类型,被设计为只能注解其它注解。
    @Target只有一个参数,这个参数来自于ElementType枚举的常量,这个参数指定了将为其应用注解的声明的类型。
    目标常量                  可应用注解的声明的类型
    ANNOTATION_TYPE 另一个注解
    CONSTRUCTOR 构造函数
    FIELD 域变量
    LOCAL_VARIABLE 局部变量
    METHOD 方法
    PACKAGE
    PARAMETER 参数
    TYPE 类,接口,枚举

    例子:
    @Target({ElementType.FIELD,ElementType.LOCAL_VARIABLE})
    4.@Inherited 标记注解,只能用于另外一个注解声明,会导致超类的注解被子类继承,如果检查子类的注解不存在,就去超类检查如果存在并使用
    @Inherited注解,就返回那种注解。
    5.@Override 只能用于方法,确保超类的方法被真正的重写。
    6.@Deprecated 过时
    7.@SafeVarargs 指示没有发生与可变长度参数相关的不安全动作。
    8.@SuppressWarnings 抑制警告

    5.注解的使用限制

    ①注解不能继承另一个注解

    ②注解声明的所有方法不带有参数

    ③注解不能被泛型化








  • 相关阅读:
    04:布尔表达式
    python中的operator模块
    python习题-4
    北大OJ1001
    [工具]toolbox_graph_laplacian
    [工具]toolbox_graph_normal_displayment
    [工具]toolbox_graph_isomap
    [工具]toolbox_graph_建立欧式距离邻接矩阵
    [工具]toolbox_graph_Floyd算法
    [工具]toolbox_graph_dijkstra算法
  • 原文地址:https://www.cnblogs.com/pangdajin/p/9358958.html
Copyright © 2020-2023  润新知