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

  • 拓展:元数据

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

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

相关推荐
0白露17 分钟前
Apifox Helper 与 Swagger3 区别
开发语言
Tanecious.1 小时前
机器视觉--python基础语法
开发语言·python
叠叠乐1 小时前
rust Send Sync 以及对象安全和对象不安全
开发语言·安全·rust
战族狼魂2 小时前
CSGO 皮肤交易平台后端 (Spring Boot) 代码结构与示例
java·spring boot·后端
Tttian6223 小时前
Python办公自动化(3)对Excel的操作
开发语言·python·excel
xyliiiiiL3 小时前
ZGC初步了解
java·jvm·算法
杉之3 小时前
常见前端GET请求以及对应的Spring后端接收接口写法
java·前端·后端·spring·vue
hycccccch4 小时前
Canal+RabbitMQ实现MySQL数据增量同步
java·数据库·后端·rabbitmq
独好紫罗兰4 小时前
洛谷题单2-P5713 【深基3.例5】洛谷团队系统-python-流程图重构
开发语言·python·算法
zhuyixiangyyds4 小时前
day21和day22学习Pandas库
笔记·学习·pandas