自定义注解(Annontation)

目录

1.注解定义

2.元注解定义

3. 自定义注解(自定义的注解名称相同的会覆盖原注解)

4.Annotation架构(元注解参数介绍)


1.注解定义

        注解是用来将任何的信息或元数据(metadata)与程序元素(类、方法、成员变量等)进行关联。是一种说明、配置、描述性的信息,与具体业务无关,也不会影响正常的业务逻辑。注解在Java程序中是作为标记的作用,有特定的程序来发现标记

2.元注解定义

        元注解是专门用来注解其他注解的注解,听起来有些绕口,实际上就是专门为自定义注解提供的注解。java.lang.annotation提供了四种元注解:

  • @Documented – 注解是否将包含在JavaDoc中
  • @Retention – 什么时候使用该注解
  • @Target – 注解用于什么地方
  • @Inherited – 是否允许子类继承该注解
  • @Repeatable - 是否可重复注解,jdk1.8引入

3. 自定义注解(自定义的注解名称相同的会覆盖原注解)

新建一个注解类 

@Documented//说明该注解能出现在 javadoc 中@Target(ElementType.TYPE)//指定 Inherited 的类型是 ElementType.TYPE。@Retention(RetentionPolicy.RUNTIME)//指定 Inherited 的策略是RetentionPolicy.RUNTIME@Inherited//它所标注的Annotation将具有继承性。
public @interface MyAnnotation1 {
}

4.Annotation架构(元注解参数介绍)

 

 

        ①、(01) 1 个 Annotation 和 1 个 RetentionPolicy 关联。可以理解为:每1个Annotation对象,都会有唯一的RetentionPolicy属性。

               (02) 1 个 Annotation 和 1~n 个 ElementType 关联。可以理解为:对于每 1 个 Annotation 对象,可以有若干个 ElementType 属性。

               (03) Annotation 有许多实现类,包括:Deprecated, Documented, Inherited, Override 等等。Annotation 的每一个实现类,都 "和 1 个 RetentionPolicy 关联" 并且 " 和 1~n 个 ElementType 关联"。

        ②、Annotation 就是个接口。

"每 1 个 Annotation" 都与 "1 个 RetentionPolicy" 关联,并且与 "1~n 个 ElementType" 关联。可以通俗的理解为:每 1 个 Annotation 对象,都会有唯一的 RetentionPolicy 属性;至于 ElementType 属性,则有 1~n 个。

        ③、ElementType 是 Enum 枚举类型,它用来指定 Annotation 的类型。

"每 1 个 Annotation" 都与 "1~n 个 ElementType" 关联。当 Annotation 与某个 ElementType 关联时,就意味着:Annotation有了某种用途。

  • ElementType.TYPE: 类、接口、注解、enum
  • ElementType.CONSTRUCTOR: 构造函数
  • ElementType.FIELD: 成员变量、对象、属性、枚举的常量
  • ElementType.LOCAL_VARIABLE: 局部变量
  • ElementType.METHOD: 方法
  • ElementType.PACKAGE: 包
  • ElementType.PARAMETER: 参数
  • ElementType.ANNOTATION_TYPE): 注解
  • ElementType.TYPE_PARAMETER:类型参数,表示这个注解可以用在 Type的声明式前,jdk1.8引入。
  • ElementType.TYPE_USE:类型的注解,表示这个注解可以用在所有使用Type的地方(如:泛型,类型转换等),jdk1.8引入。

        ④、RetentionPolicy 是 Enum 枚举类型,它用来指定 Annotation 的策略(类型)。通俗点说,就是不同 RetentionPolicy 类型的 Annotation 的作用域不同。

                a、若 Annotation 的类型为 SOURCE,则意味着:Annotation 仅存在于编译器处理期间,编译器处理完之后,该 Annotation 就没用了。 例如," @Override" 标志就是一个 Annotation。当它修饰一个方法的时候,就意味着该方法覆盖父类的方法;并且在编译期间会进行语法检查!编译器处理完后,"@Override" 就没有任何作用了。

                b、若 Annotation 的类型为 CLASS,则意味着:编译器将 Annotation 存储于类对应的 .class 文件中,它是 Annotation 的默认行为。
                c、若 Annotation 的类型为 RUNTIME,则意味着:编译器将 Annotation 存储于 class

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/30478.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

苍穹外卖项目解读(四) 微信小程序支付、定时任务、WebSocket

前言 HM新出springboot入门项目《苍穹外卖》,笔者打算写一个系列学习笔记,“苍穹外卖项目解读”,内容主要从HM课程,自己实践,以及踩坑填坑出发,以技术,经验为主,记录学习&#xff0…

深度学习基础知识扫盲

深度学习 监督学习(Supervised learning)监督学习分类 无监督学习(Non-supervised learning)无监督学习的算法无监督学习使用场景 术语特征值特征向量特征工程(Feature engineering)特征缩放Sigmod functio…

大学生创业运营校园跑腿小程序怎么样?

校园跑腿小程序是一种基于移动互联网的服务平台,旨在为大学生提供便捷的跑腿服务。它可以连接大学生用户和需要代办事务的人群,实现多方共赢的局面。接下来,我将从需求背景、市场前景、功能特点等方面进行分析。 首先,校园跑腿小程…

使用mybatis-plus的updateById方法更新一个numeric(1)类型字段,sql成功执行,但是updates为0,更新失败的解决办法

使用mybatis-plus的updateById方法更新一个numeric(1)类型字段,sql成功执行,但是updates为0,更新失败的解决办法: 背景:我有一张表,有个启用禁用功能,没有放在编辑页面一起编辑保存,…

最强自动化测试框架Playwright-操作指南(3)-PO模式

playwright支持PO模式 创建页面对象 class SearchPage:def __init__(self, page):self.page pageself.search_term_input page.get_by_role("searchbox", name"输入搜索词")def navigate(self):self.page.goto("https://bing.com")def searc…

MySQL5.7数据库、Navicat Premium1.6可视化工具安装教程【详细教程】

文章目录 一、MySQL、Navicat、注册机地址二、安装(一)、MySQL安装(二)、Navicat Premium安装(三)、集活Navicat Premium 三、遇到的问题1、Are you sure your navicat has not beenpatched/modified befor…

TCP/UDP常见考点

1. TCP连接过程 1.1 三次握手 #mermaid-svg-MqcHXmAe6NVoJ6ZL {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-MqcHXmAe6NVoJ6ZL .error-icon{fill:#552222;}#mermaid-svg-MqcHXmAe6NVoJ6ZL .error-text{fill:#5522…

【高频面试题】微服务篇

文章目录 Spring Cloud1.Spring Cloud 5大组件有哪些?2.服务注册和发现是什么意思?Spring Cloud 如何实现服务注册发现?3.负载均衡如何实现的 ?4.什么是服务雪崩,怎么解决这个问题?5.微服务是怎么监控的 业务相关6.项…

python - 爬虫简介

什么是爬虫? 模拟浏览器对网站服务器发送请求解析服务器返回的响应数据,并保存数据 爬虫能获取哪些数据? 原则上所有可以通过浏览器获取的数据都可以爬取爬虫也只能获取爬取浏览器可以正常获取的数据 爬虫的应用场景? 数据分…

SQL - limit

介绍: limit 是限制的意思, 用于限制返回的查询结果的行数(可以通过limit指定查询多少行数据). MySQL支持limit语法, 用来完成分页. 用法: select 字段1, 字段2, ... from table_name limit offset, length;参数说明: offset: 起始行数, 从0开始计数, 如果省略, 则默认为…

Nginx安装以及LVS-DR集群搭建

Nginx安装 1.环境准备 yum insatall -y make gcc gcc-c pcre-devel #pcre-devel -- pcre库 #安装openssl-devel yum install -y openssl-devel 2.tar安装包 3.解压软件包并创建软连接 tar -xf nginx-1.22.0.tar.gz -C /usr/local/ ln -s /usr/local/nginx-1.22.0/ /usr/local…

数组对象去重的几种方法

场景: let arrObj [{ name: "小红", id: 1 },{ name: "小橙", id: 1 },{ name: "小黄", id: 4 },{ name: "小绿", id: 3 },{ name: "小青", id: 1 },{ name: "小蓝", id: 4 } ]; 方法一:…

【PyTorch】nn.Conv2d函数详解

nn.Conv2d 是 PyTorch 中的一个卷积层,用于实现二维卷积操作 torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride1, padding0, dilation1, groups1, biasTrue, padding_modezeros, deviceNone, dtypeNone )参数解释 in_channels:输入的通…

【React学习】—函数式组件(四)

【React学习】—函数式组件&#xff08;四&#xff09; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><ti…

在Python和C++中使用Bowyer-Watson算法的简单Delaunay三角剖分库

引言 Delaunay三角剖分是一种常用的计算几何算法&#xff0c;它在许多领域都有广泛的应用&#xff0c;包括计算机图形学、地理信息系统&#xff08;GIS&#xff09;、数值模拟等。在这篇文章中&#xff0c;我们将介绍如何在Python和C中使用Bowyer-Watson算法实现一个简单的Del…

HECI-Securtiy 防火墙路由技术

目录 一、防火墙路由基本原理 1.路由分类 2.路由优先级 3.路由查询先后顺序 4.静态路由基本原理 &#xff08;1&#xff09;指定出接口场景 &#xff08;2&#xff09;指定下一跳地址场景 5.静态路由与多出口 &#xff08;1&#xff09;主备备份 &#xff08;2&#…

robotframework+selenium 进行webui页面自动化测试

robotframework其实就是一个自动化的框架&#xff0c;想要进行什么样的自动化测试&#xff0c;就需要在这框架上添加相应的库文件&#xff0c;而用于webui页面自动化测试的就是selenium库. 关于robotframework框架的搭建我这里就不说了&#xff0c;今天就给大家根据一个登录的实…

OBS视频视频人物实时扣图方法(四种方式)

图片擦除一些杂乱图像 参考&#xff1a;https://www.bilibili.com/video/BV1va411G7be https://github.com/Sanster/lama-cleaner第一种&#xff1a;色度键选项 第二种&#xff1a;浏览器建立窗口选项 参考视频&#xff1a;https://www.bilibili.com/video/BV1WS4y1C7QY http…

【SpringBoot框架篇】33.优雅集成i18n实现国际化信息返回

文章目录 1.简介2.MessageSource配置和工具类封装2.1.配置MessageSource相关配置2.2.配置工具类2.3.测试返回国际级文本信息 3.不优雅的web调用示例(看看就行&#xff0c;别用)4.优雅使用示例4.1.错误响应消息枚举类4.2.ThreadLocal工具类配置4.2.1.ThreadLocal工具类数据封装4…

Nginx location匹配规则详解

Nginx location匹配规则详解 在Nginx配置location块时,不同的匹配规则会影响location的匹配优先级。本文将详细解释Nginx location的匹配规则。 location匹配规则 Nginx的location匹配按照以下优先级顺序进行: 1. 精确匹配 格式为location / { },必须完全匹配路径才会生…