【Java】注解篇

注解详解

一、什么是注解

先看看注解长啥样
在这里插入图片描述

注解就是一种特殊标记,这种标记可以告诉处理程序看到它时应该相应地做哪些操作。没有对应处理程序的注解是没有意义的。打个比方,我们在学习过程中,会在书上做各种标记,有的地方用红色笔画横线,有的地方用蓝色笔画波浪线。别人看了这些标记,最多觉得你把书标得五颜六色,实质上对别人提高学习成绩没啥用。但是如果你告诉他红色是期末考试重点,蓝色是月考重点,却可以提高他考试拿高分的效率。

  • 【红色横线/l蓝色波浪线】——【注解】
  • 【期末考试前重点复习红色内容/月考前重点复习蓝色内容】——【处理程序逻辑】

二、为什么要使用注解

注解的优势

  1. 可以在不影响业务逻辑的基础上,附加一些功能,即非入侵式增强,如单元测试、监控、日志记录等
  2. 简化编程,实现高内聚低耦合
  3. 方便开发调试,进行一些提示警告,如重写时名称书写错误、声明的变量没有使用等
  4. 很多成熟框架中如spring、springboot等,替代配置文件,进行自动装配
    框架=注释+反射+设计模式
  5. 为对应项目自动生成文档

三、如何定义注解

注解是与类、接口同一级别的类型,使用关键字@interface进行定义。注解中的成员仅包含成员变量,不包含成员方法,并且该成员变量比较特殊,通过没有方法体的无参方法形式来表示。

public @interface{
	String value() default "hello annotation";
	int[] nums();
}
  • 成员变量可以是任何类型
  • 成员变量个数可以是任意多个,可以没有成员变量
  • 当只有一个成员变量时,其名称最好写为value
  • 可以通过default关键字来设置默认值

四、注解有哪些类型

注解一共有三种类型

  • 【jdk内置注解】如@Override、@SupressWarnings、@Deprecated
  • 【元注解】:注解注解的注解,就是该注解是在定义注解时使用
    • @Retention:定义注解的生命周期
    • @Target:定义注解的作用对象
    • @Inherited:定义注解是否具有继承性
    • @Documented:定义注解是否会被javadoc转成文档
  • 【 自定义注解】:见上述注解定义部分

下面主要着重介绍元注解

1、@Retention

定义:定义注解生命周期的注解
在这里插入图片描述
注解的生命周期——通过一个枚举类表示RetentionPolicy

  • RetentionPolicy.SOURCE
  • RetentionPolicy.CLASS,默认
  • RetentionPolicy.RUNTIME
    在这里插入图片描述

2、@Target

定义:定义注解的作用对象
在这里插入图片描述
注解的作用对象——通过一个枚举类表示ElementType

  • ElementType.TYPE
  • ElementType.FIELD
  • ElementType.METHOD
  • ElementType.PARAMETER
  • ElementType.CONSTRUCTOR
  • ElementType.LOCAL_VARIABL
  • ElementType.ANNOTATION_TYPE,元注解
  • ElementType.PACKAGE
    在这里插入图片描述

3、@Inherited

定义:如果一个注解上标注了@Inherited,表示该注解具有继承性,即如果一个类上使用了该注解,则子类上即使没有显示标注该注解,实际上等价于拥有该注解

  • 默认情况下,注解没有继承性

在这里插入图片描述

4、@Documented

**定义:**定义注解会被javadoc转成文档存储
在这里插入图片描述

五、如何使用注解

  1. 定义一个注解
  2. 编写处理程序(借助反射)
    在这里插入图片描述

六、注解的新特性

注解的功能是在JDK1.5中引入,在JDK8中增加了两个新特性

1、增加了一个元注解——@Repeatable

定义:表示注解可重复设置
在这里插入图片描述

同一个目标对象上设置多个重复的注释
在这里插入图片描述
JDK8以前的解决方案

  • 定义一个对应注释数组类型为成员变量的注释
  • 将多个注释为参数传入
    在这里插入图片描述

JDK8以后的解决方案

  • 定义一个对应注释(目标注解)数组类型为成员变量的注释(组注解)
  • 目标注解和表示组的注解中, @Inherited、@Retention、@Target等元注解必须保持一样的设置

在这里插入图片描述

2、扩展了注解的作用对象——TPYE_PARAMETER/TYPE_USE

定义
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值