【Java -- 基础】深入探索 -- 注解(Annotation)

本文详细介绍了Java中的注解,包括元注解(如@Retention、@Documented、@Target、@Inherited、@Repeatable)、内置注解(如@Deprecated、@Override、@SuppressWarnings、@SafeVarargs、@FunctionalInterface)以及如何自定义注解,并给出了实际应用的案例,帮助读者深入理解注解的使用和意义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、前言

在 Java 中,注解(Annotation)非常重要,但对于很多开发者来说,这并不容易理解,甚至觉得有点神秘。

二、类型

注解的类型包括:元注解 、 Java 内置注解 & 自定义注解。

1. 元注解

在这里插入图片描述

  • @Retention
    定义:保留注解
    作用:解释 / 说明了注解的生命周期
    具体使用:
// 元注解@Retention(RetentionPolicy.RUNTIME)的作用:说明 注解Carson_Annotation的生命周期 = 保留到程序运行时 & 被加载到 JVM 中
@Retention(RetentionPolicy.RUNTIME)
public @interface Carson_Annotation {
   
   
}

<-- 元注解@Retention参数说明 -->
// RetentionPolicy.RUNTIME:注解保留到程序运行时 & 会被加载进入到 JVM 中,所以在程序运行时可以获取到它们
// RetentionPolicy.CLASS:注解只被保留到编译进行时 & 不会被加载到 JVM 
// RetentionPolicy.SOURCE:注解只在源码阶段保留 & 在编译器进行编译时将被丢弃忽视。

  • @Documented
    定义:Java文档注解
    作用:将注解中的元素包含到 Javadoc 文档中
    具体使用:
// 元注解@Documented作用:说明 注解Carson_Annotation的元素包含到 Javadoc 文档中
@Documented
public @interface Carson_Annotation {
   
   
}
  • @Target
    定义:目标注解
    作用:限定了注解作用的目标范围,包括类、方法等等
    具体使用:
// 元注解@Target作用:限定了注解Carson_Annotation作用的目标范围 = 方法
// 即注解Carson_Annotation只能用于解释说明 某个方法
@Target(ElementType.METHOD)
public @interface Carson_Annotation {
   
   
}

<-- @Target取值参数说明 -->
// ElementType.PACKAGE:可以给一个包进行注解
// ElementType.ANNOTATION_TYPE:可以给一个注解进行注解
// ElementType.TYPE:可以给一个类型进行注解,如类、接口、枚举
// ElementType.CONSTRUCTOR:可以给构造方法进行注解
// ElementType.METHOD:可以给方法进行注解
// ElementType.PARAMETER 可以给一个方法内的参数进行注解
// ElementType.FIELD:可以给属性进行注解
// ElementType.LOCAL_VARIABLE:可以给局部变量进行注解
  • @Inherited
    定义:继承注解
    作用:使得一个被 @Inherited 注解的注解 作用的类的子类可以继承该类的注解
    具体使用:
// 元注解@Inherited 作用于 注解Carson_Annotation
@Inherited
public @interface Carson_Annotation {
   
   
}


// 注解Carson_Annotation 作用于A类
@Carson_Annotation
public class A {
   
   
  }

// B类继承了A类,即B类 = A类的子类,且B类没被任何注解应用
// 那么B类继承了A类的注解 Carson_Annotation
public class B extends A {
   
   }
  • @Repeatable
    定义:可重复注解
    作用:使得作用的注解可以取多个值
    具体使用:
// 1. 定义 容器注解 @ 职业
public @interface Job {
   
   
    Person[]  value();
}
<-- 容器注解介绍 -->
// 定义:本身也是一个注解
// 作用:存放其它注解
// 具体使用:必须有一个 value 属性;类型 = 被 @Repeatable 注解的注解数组
// 如本例中,被 @Repeatable 作用 = @Person ,所以value属性 = Person []数组

// 2. 定
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Kevin-Dev

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值