当前位置: 首页 > news >正文

java 注解学习

Java 语言中存在三类注解,分别是元注解(Meta-annotations)、Java 内置注解(Built-in Annotations)和自定义注解(Custom Annotations)。

1、元注解(Meta-annotations)

元注解是指用于注解其他注解的注解。Java 语言中内置了数个元注解,包括@Retention、@Target、@Inherited、@Documented、@Repeatable 等。通常情况下,创建新注解时,也会使用到这些元注解来描述新注解。

下面是一些元注解的含义和示例:

  • @Retention:用于描述注解的保留策略,即注解信息在运行时是否还保留在类文件中。示例代码:@Retention(RetentionPolicy.RUNTIME)。
  • @Target:用于指定注解可以应用的目标类型(类、方法、属性等),可以出现在注解声明的自定义注解上。示例代码:@Target(ElementType.METHOD)。
  • @Inherited:用于指定子类是否自动继承父类上的注解。示例代码:@Inherited。
  • @Documented:用于指定注解是否包含在 JavaDoc 中。示例代码:@Documented。

2、Java 内置注解(Built-in Annotations)

Java 内置注解是指 Java 标准库中所提供的一些注解,它们在 Java 应用程序开发中有广泛的应用,如 @SuppressWarnings、@Override 等。Java 内置注解的使用方式和普通注解类似。

下面是一些 Java 内置注解的示例:

  • @Override:表示当前方法将覆盖其父类中的同名方法。示例代码:@Override。
  • @SuppressWarnings:表示取消编译器或 IDE 的警告信息。示例代码:@SuppressWarnings(“unchecked”)。
  • @Deprecated:表示已经不建议使用的程序元素。示例代码:@Deprecated。

3、自定义注解(Custom Annotations)

自定义注解是指开发者自己创建的一些注解,用于添加程序元素的元数据信息。自定义注解是 Java 应用程序开发中的一项重要机制,例如 Spring MVC 中的@RequestMapping、@RequestBody、@Autowired 等,都是自定义注解。

下面是一个自定义注解的示例:

@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
    String name() default "MyAnnotation";
    String value() default "";
}

上述代码中,我们创建了一个名为 @MyAnnotation 的自定义注解,该注解包含两个元素:name 和 value。其中,name 元素是必填项,它指定了注解的名称;value 元素是选填项,用于设置注解的具体值。

总之,注解是一种非常强大和灵活的 Java 语言机制,它可以为 Java 应用程序添加更多丰富的元数据信息,方便开发者在程序运行时进行元数据的读取和处理,提高程序的可读性和可维护性。

@Target(ElementType.TYPE) 是用于指定注解所能应用到程序元素的种类,其中的 ElementType.TYPE 表示注解可以应用到类、接口(包括注解类型)或枚举上。

具体而言,该注解可以用于标注类、接口、枚举以及注解类型声明上,也就是说,在编写注解时,我们可以通过这个注解指定这个注解可以用于哪些类、接口、枚举或注解类型上。

下面是一个示例,演示如何使用 @Target(ElementType.TYPE) 声明一个自定义注解 @MyAnnotation,以便将该注解应用在类、接口、枚举和注解类型上:

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
    String value() default "";
}

在上述代码中,我们使用注解@Target(ElementType.TYPE)来指定该注解可以应用于类、接口、枚举和注解类型上。这意味着,如果一个类上使用了该注解,则这个注解同样可以应用于该类的所有子类以及实现的接口、枚举和注解类型上。

相关文章:

  • java 注解学习
  • 基于LLMs的多模态大模型(Flamingo, BLIP-2,KOSMOS-1,ScienceQA)
  • 数字信号处理(8)IIR滤波器及实现
  • 【1091. 二进制矩阵中的最短路径】
  • Android Jetpack Compose之列表的使用
  • 如何在 Windows 10 中刷新 DNS 解析缓存
  • TI EDI 项目数据库方案开源介绍
  • openGauss Developer Day 2023 | 邀您参加海量数据分论坛
  • 上线11年公众号广告大变天!最新政策解读|西瓜数据
  • chatgpt赋能python:Python二次方的表示方法及其应用
  • Java程序设计入门教程--标识符和关键字
  • 经典文献阅读之--ERASOR(栅格占用过滤动态障碍物)
  • 2023年B题人工智能对大学生学习影响的评价
  • 2023电工杯数学建模竞赛A题思路解析+代码+论文
  • 【uniapp】踩坑日记核心重点
  • docker入门(1)----服务/镜像/容器相关命令
  • 100种思维模型之全局观思维模型-67
  • 设计模式 - 观察者模式
  • 【Go语言从入门到实战】面向对象编程篇
  • 前端人必须掌握的抓包技能(原理到实践)
  • MATLAB算法实战应用案例精讲-【数模应用】残差检验(补充篇)
  • 基础数论实际应用场景
  • 【018】C++的指针数组和数组指针
  • git操作流程
  • 《智能新工厂规划白皮书》:新工厂发展趋势一览
  • leetcode 942. 增减字符串匹配
  • Docker应用部署之Nginx
  • JAVA软件测试(贝泽成熟度模型)
  • Benewake(北醒) 快速实现 TF02-Pro-IIC 与电脑通信操作说明
  • Eclipse教程 Ⅴ