• Java 注解


    什么是注解?

    注释: 用文字描述程序的, 给程序员看的.

    注解 ( Annotation ): 说明程序的, 给计算机看的.

    定义: 

    1. 注解, 也叫元数据, 一种代码级别的说明, 是 JDK 1.5 及以后版本的新特性.
    2. 与类, 接口, 枚举是在同一个层次, 它可以声明在包, 类, 字段, 方法, 局部变量的前边, 用来对这些元素进行说明.

    作用分类: 

    1. 编写文档: 生成 doc 文档.
    2. 代码分析: 通过注解对代码进行分析. (使用反射)
    3. 编译检查: 让编译器能够实现基本的编译检查. (例如: Override)

    JDK 内置注解

    jdk 中预定义的一些注解: 

    1. @Override: 检测被注解标注的地方是否是继承父类 (接口) 的.
    2. @Deprecated: 该注解标注的内容, 表示已过时.
    3. @SuppressWarnings: 压制警告, 例如: @SuppressWarnings("all")

    demo:

    @SuppressWarnings("all")  // 压制警告
    interface MyInterface{
        public void test();
    }
    
    public class Main implements MyInterface {
        public static void main(String[] args) {
            Main m = new Main();
            m.show1();   // 不推荐使用过时的方法, 但也可以调用
            m.show2();
        }
    
        @Override
        public void test() {
    
        }
    
        @Deprecated
        public void show1(){
            System.out.println("old");
        }
    
        public void show2(){
            System.out.println("new");
        }
    }

    元注解

    用于描述注解的注解 (类似于 py 中装饰器的嵌套)

    1. @Target: 描述注解能够作用的位置.  ( TYPE: 可以作用于类, METHOD: 作用于方法, FIELD: 作用于成员变量 )
    2. @Retention: 描述注解被保留的阶段. ( 源码, 字节码[编译], runtime ), 一般使用 runtime
    3. @Documented: 描述注解是否被抽取到 api 文档中.
    4. @Inherited: 描述注解是否被子类继承.

    自定义注解

    格式: public @interface 注解名称{}

    本质: 注解本质上就是一个接口, 该接口默认继承 Annotation 接口

    • public interface MyAnno extends java.lang.annotation.Annotation {}

    属性:

    1. 接口中可以定义的抽象方法 (称作注解的属性)

      属性的返回值类型有下列取值

      • 基本数据类型

      • String

      • 枚举

      • 注解

      • 以上类型的数组

    2. 定义了属性, 在使用时需要给属性赋值

      • 如果定义属性时, 使用default关键字给属性默认初始化值, 则使用注解时, 可以不进行属性的赋值

      • 如果只有一个属性需要赋值, 并且属性的名称是value, 则value可以省略, 直接定义值即可

      • 数组赋值时, 值使用 {} 包裹, 如果数组中只有一个值, 则 {} 可省略

    // TODO 缺少一个注解的例子 ... 

    ending ~ 

    每天都要遇到更好的自己.
  • 相关阅读:
    【LoadRunner-Vuser Generator】录制脚本设置Recording Options
    【LoadRunner-内部结构】
    【LoadRunner-工作过程】
    单片机上内存管理(重定义malloc free)的实现
    stm32模块的初始化顺序要求的更改设值
    [CAN波形分析] 一次CAN波形分析之旅
    w5500调试小记
    keil mdk中save和load指令,在调试中比较有用,以及hex格式的学习
    PHP启用session后抛 session_start(): open(/var/lib/php/session/sess_... 的解决办法
    brew 方式安装的php,关闭与重启----mac启动,关闭php-fpm方式
  • 原文地址:https://www.cnblogs.com/kaichenkai/p/11842479.html
Copyright © 2020-2023  润新知