zoukankan      html  css  js  c++  java
  • 【Java】Annotation 注解

    Annotation 注解

    注解是一种元数据 MetaData,从JDK5开始

    在Java代码中是一个特殊的标记,可以在编译,类加载,运行时读取,执行对应的处理

    程序可以在不改变原有逻辑的基础上嵌入一些补充信息,代码分析工具,开发工具,部署工具通过补充信息

    进行验证和部署

    注解可以使用在任何写代码的地方:

    - 包

    - 类

    - 构造器

    - 方法

    - 成员变量

    - 参数

    - 局部变量的声明

    信息被保存在 KV对中

    在我们学过的J2SE中,注解的使用目的很简单,只是为了标记功能

    - 标记过时方法和字段 @Deprecated

    - 标记编译器警告忽略 @SuppressWarnings

    - 标记方法是重写父类的方法 @Override

    EE/Andriod 的用途更为强大,用来配置程序的切面,配置注入参数信息

    在以后的发展中,注解将会越来越重要,现阶段的框架就是

    注解 + 反射 + 设计模式 

    摆脱繁琐的XML配置

    文档注解 Document Annotation

    @author 声明开发者名字,多个开发者使用逗号分隔  - @author 张三,李四,王五

    @version 开发版本  -@version 1.0

    @see 相关资料地址

    @since 从哪个版本开始有的

    @param 对参数的说明

    @return 对返回值的说明

    @exception 对可能抛出的异常的说明

    编译检查注解 CompileCheck Annotation

    - JDK内置的三个基本注解

    @Override 标记为重写的父类方法,仅标记方法

    @Deprecated 比较为已过时的方法,但是不妨碍调用,可标记在类和方法上

    @SuppressWarnings 抑制编译器警告,对波浪警告提示烦了?试试这个玩意儿

    自定义注解实现

    public @interface MyAnnotation { // 声明类一样声明注解 @interface
    
        // 注解的成员属性 定义在午餐方法中声明 属性只能声明默认的 protected public 这三种
        
        // 方法名即是属性的标识名,方法的返回类型就是属性的数据类型
        
        // 类型可以声明为 8个基本类型、类类型、枚举类型、注解类型?、和前面数据类型的数组
        
        // 可以声明default 为遍历指定初始值
        
        // 只有一个,且是最重要的参数 可使用value表示、 在注解的时候可以不用写 value = ? 直接写值即可
        
        // 定义的注解有配置参数,则必须指定参数值,也就是要赋值 除非存在默认初始值
        
        // 自定义注解必须配上注解的信息处理流程才有意义?
        String name();
    }
    
    // 使用注解
    @MyAnnotation(name = "hello")
    class AC{
        
    }

    声明default 默认可不需要赋值,适用于默认配置,我不想配置也可以用

    - 注解声明为@interface

    - 内部定义成员,不是方法!!! 通常使用value表示

    - 可以default声明默认值

    - 自定义注解如果没有成员,那么只是一个标记注解

    JDK元注解 Meta - Annotation

    - 用于注解注解的注解【给注解上注解!】

    4个标准元注解 

    @Retention

    @Target

    @Documented

    @Inherited

    元数据?对现有数据的一个修饰 String name = "阿伟"

    最重要的是阿伟这个值,元数据只是对他的修饰,

    name是值的标识,String是值的类型,这些被称为元数据

    所以也就是说,元注解是对注解的修饰规范

    @Retention  注解的生命周期

    该注解包含一个RetentionPolicy保留策略的枚举类

    用于标注注解的保留策略

    枚举项:

    - RetentionPolicy.SOURCE 保留在源码中,编译和运行丢弃

    - RetentionPolicy.CLASS 保留在字节码中,JVM运行丢弃 ,这是默认的保留策略

    - RetentionPolicy.RUNTIME 运行保留,程序可以反射获取注解信息

    @Target  可注解的位置

    该注解包含一个元素类型的枚举类数组

    用于标注注解的可标注位置

    枚举项:

    - TYPE 

    - FIELD

    - METHOD

    - PARAMETER

    - CONSTRUCTOR

    - LOCAL_VARIABLE

    - ANNOTATION_TYPE

    - PACKAGE

    - TYPE_PARAMETER  JDK8特性  可注解类类型 

    - TYPE_USE  JDK8特性  注解使用类类型

    @Documented  可生成文档的

    被注解的注解类可以被JavaDoc识别,并提取生成文档

    @Inherited  可继承的

    给自定义的注解类注解,自定义注解具有可继承性,

    当一个父类注解了自定义注解,其子类继承了父类也会拥有该注解

    JDK8  

    可重复注解?

    类型注解?

    重复注解意思是我们希望在一个地方可以使用多次一样的注解

    但是很明显这不允许!

    JDK8之前采用注解数组的办法实现兼容

    在注解时使用此注解

    JDK8增加了一个新的注解,用于这种情形

    @Repeatable  可重复的

    要注意的是两者的注解的@Retention生命周期、@Target可标注的位置必须一致,还有@Inherited

  • 相关阅读:
    初始化注解和销毁注解
    MySQL、SQLServer、Oracle 分组排序
    mybatis 中SQLServer 和 mysql 模糊查询 不同点
    SpringBoot学习之logback.xml 配置指定包或类输出至单独的日志文件中
    类比 RocketMq 和 淘宝消息服务:
    SVN提交文件失败:系统找不到指定路径
    官网下载MySQL 并安装
    Java 变量参数传入方法,方法结束后传入的值
    03-类与对象课后作业(1)
    02方法-课后动手动脑
  • 原文地址:https://www.cnblogs.com/mindzone/p/12737333.html
Copyright © 2011-2022 走看看