zoukankan      html  css  js  c++  java
  • 20190928 On Java8 第二十三章 注解

    第二十三章 注解

    定义在 java.lang 包中的5种标准注解:

    • @Override:表示当前的方法定义将覆盖基类的方法。如果你不小心拼写错误,或者方法签名被错误拼写的时候,编译器就会发出错误提示。
    • @Deprecated:如果使用该注解的元素被调用,编译器就会发出警告信息。
    • @SuppressWarnings:关闭不当的编译器警告信息。
    • @SafeVarargs:在 Java 7 中加入用于禁止对具有泛型varargs参数的方法或构造函数的调用方发出警告。
    • @FunctionalInterface:Java 8 中加入用于表示类型声明为函数式接口

    基本语法

    从语法的角度上看,注解的使用方式和修饰符的使用方式一致。

    定义注解

    @Target 定义你的注解可以应用在哪里(例如是方法还是字段)。@Retention 定义了注解在哪里可用,在源代码中(SOURCE),class文件(CLASS)中或者是在运行时(RUNTIME)。

    不包含任何元素的注解称为标记注解(marker annotation)。

    元注解

    Java 语言中目前有 5 种标准注解,以及 5 种元注解。

    元注解用于注解其他的注解:

    注解 解释
    @Target 表示注解可以用于哪些地方。可能的ElementType参数包括:CONSTRUCTOR:构造器的声明FIELD:字段声明(包括 enum 实例)LOCAL_VARIABLE:局部变量声明METHOD:方法声明PACKAGE:包声明PARAMETER:参数声明TYPE:类、接口(包括注解类型)或者 enum 声明
    @Retention 表示注解信息保存的时长。可选的RetentionPolicy参数包括:SOURCE:注解将被编译器丢弃CLASS:注解在 class 文件中可用,但是会被 VM 丢弃。RUNTIME:VM 将在运行期也保留注解,因此可以通过反射机制读取注解的信息。
    @Documented 将此注解保存在 Javadoc 中
    @Interited 允许子类继承父类的注解
    @Repeatable 允许一个注解可以被使用一次或者多次(Java 8)。

    编写注解处理器

    使用注解中一个很重要的部分就是,创建与使用注解处理器。Java 拓展了反射机制的 API 用于帮助你创造这类工具。同时他还提供了 javac 编译器钩子在编译时使用注解。

    注解元素

    注解元素可用的类型如下所示:

    • 所有基本类型(int、float、boolean等)
    • String
    • Class
    • enum
    • Annotation
    • 以上类型的数组

    默认值限制

    元素要么有默认值,要么就在使用注解时提供元素的值。

    这里有另外一个限制:任何非基本类型的元素, 无论是在源代码声明时还是在注解接口中定义默认值时,都不能使用 null 作为其值。

    生成外部文件

    @Target 注解中指定的每一个 ElementType 就是一个约束,它告诉编译器,这个自定义的注解只能用于指定的类型。你可以指定 enum ElementType 中的一个值,或者以逗号分割的形式指定多个值。如果想要将注解应用于所有的 ElementType,那么可以省去 @Target 注解,但是这并不常见。

    快捷方式特性:如果你在注解中定义了名为 value 的元素,并且在使用该注解时,value 为唯一一个需要赋值的元素,你就不需要使用名—值对的语法,你只需要在括号中给出 value 元素的值即可。这可以应用于任何合法类型的元素。这也限制了你必须将元素命名为 value.

    替代方案

    在 Java 8,在使用多个注解的时候,你可以重复使用同一个注解。

    注解不支持继承

  • 相关阅读:
    jupyter 更新环境变量 %env
    viterbi 维特比解码过程,状态转移矩阵
    ValueError: cannot index with vector containing NA / NaN values
    python ElasticSearch ES 搜索词 完全匹配 精准匹配
    首页 如何在Jupyter中抑制回溯?
    python 操作ES
    python 玩转 侦探游戏 嫌疑犯 真假话 侦探推理
    python – 解析pcfg语法树 提取其语法规则 Probabilistic Context-Free Grammar Parser
    2019-09-18 关键字匹配文件名--搜索文件
    2019-07-21 win10安装rabbitmq与启动
  • 原文地址:https://www.cnblogs.com/huangwenjie/p/11604568.html
Copyright © 2011-2022 走看看