Java —— 注解

注解的使用

1.Annotation的理解

  • 注释(annotation)是从'jdk5.0'开始引入,以'@注解名'在代码中存在
  • Annotation可以像修饰符一样被使用,可以修饰包、类、构造器、方法、成员变量、参数、局部变量的声明。还可以添加一些参数值,这些信息被保存在Annotation("name = value")
  • 注解还可以在类编译、运行时进行加载,体现不同的功能。

2.注解的应用场景

  • 生成文档相关的注解
  • 在编译时进行格式检查(JDK内置的三个基本注解'@Override、@Deprecated、@SuppressWarnings')
  • 跟踪代码依赖性,实现替代配置文件功能

3.Java基础涉及到的三个常用注解

  • @Override: 限定,校验重写父类方法,该注解只能用于方法,
  • @Deprecated: 用于表示所修饰的元素(类,方法等)已过时。通常是因为所修饰的结构危险或存在更好的选择,向下兼容
  • @SuppressWarnings: 抑制编译器警告

4.自定义注解

java 复制代码
@Target({TYPE, METHOD, CONSTRUCTOR})  //可修饰的结构
@Retention(RetentionPolicy.SOURCE)  //生命周期
public @interface MyAnnotation {   //在类中使用@MyAnnotation()
    String value() default "hello";  
}

5.元注解的理解

  • 元注解:对现有的注解进行解释说明的注解

  • 举例:

    java 复制代码
    @Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE, MODULE})
    @Retention(RetentionPolicy.SOURCE)
    //修饰现有的@SuppressWarnings注解的注解(@Target 和 @Retention)
    public @interface SuppressWarnings {  
        String[] value();
    }
  • 常用的4个元注解

    • @Target:用于描述注解的使用范围

      @Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE, MODULE})

      可以通过枚举类型ElementType的10个常量对象来指定

      TYPE,METHOD,CONSTRUCTOR,PACKAGE...

    • @Retention:用于描述注解的生命周期

      可以通过枚举类型RetentionPolicy的3个常量对象来指定,SOURCE(源代码)、CLASS(字节码)、RUNTIME(运行时)唯有RUNTIME阶段才能被反射读取到

    • @Documented:表明这个注解应该被 javadoc工具记录。

    • @Inherited:允许子类继承父类中的注解

  • 拓展:元数据

    元数据是关于数据的数据,用于描述数据的属性和结构,以便用户能够更好地识别、评价、追踪和管理数据资源

  • 框架 = 注解 + 反射 + 设计模式

相关推荐
jjjxxxhhh1231 天前
RSA加密解密代码
开发语言·c++
重生之后端学习1 天前
236. 二叉树的最近公共祖先
java·数据结构·算法·职场和发展·深度优先
Sun_gentle1 天前
java.lang.RuntimeException: Could not load wrapper properties from ‘C:\Users\
java·开发语言·安卓
笨蛋不要掉眼泪1 天前
Nacos配置中心详解:核心用法、动态刷新与经典面试题解析
java·数据库·后端
键盘鼓手苏苏1 天前
Flutter for OpenHarmony:git 纯 Dart 实现的 Git 操作库(在应用内实现版本控制) 深度解析与鸿蒙适配指南
开发语言·git·flutter·华为·rust·自动化·harmonyos
橙露1 天前
面向对象编程思想:Java 与 Python 的封装、继承与多态对比分析
java·开发语言·python
上海合宙LuatOS1 天前
LuatOS核心库API——【io】 io操作(扩展)
java·服务器·前端·网络·单片机·嵌入式硬件·物联网
ShineWinsu1 天前
对于C++:模版进阶的解析
开发语言·c++·面试·笔试·求职·进阶·模版
追随者永远是胜利者1 天前
(LeetCode-Hot100)42. 接雨水
java·算法·leetcode·职场和发展·go
lifallen1 天前
点分治 (Centroid Decomposition)
java·数据结构·算法