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:允许子类继承父类中的注解

  • 拓展:元数据

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

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

相关推荐
坐吃山猪1 分钟前
【多线程】什么时候必须/推荐使用Thread类
java·开发语言
tju新生代魔迷7 分钟前
Verilog HDL学习笔记(三)| 第3章 基本概念(上)——词法约定与数据类型
笔记·学习
一只小阿乐10 分钟前
java 快速上手开发 2
java·开发语言·前端
骇客野人11 分钟前
SpringBoot+SpringCloud高并发系统设计、搭建与落地实施方案
java·spring boot·spring cloud
张宇Joaquin14 分钟前
灵渠测试工具-urma_perftest
java·开发语言
当战神遇到编程15 分钟前
Java 集合框架详解:Collection 与 List 核心用法
java
高彬31 分钟前
SAP ECC6.0 对接 C# web Services服务
开发语言·前端·c#·sap
张小姐的猫36 分钟前
【C++开发脚手架】 —— Jsoncpp上手
java·linux·开发语言·网络·c++·tcp/ip·udp
一晌小贪欢36 分钟前
python-第20天:关键字参数与不定长参数
java·开发语言·前端·python·数据可视化·函数参数·python办公
小灰灰搞电子37 分钟前
Rust+Slint 实现蜂巢菜单源码分享
开发语言·rust·蜂巢菜单.