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

自定义注解(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

相关文章:

自定义注解(Annontation)

目录 1.注解定义 2.元注解定义 3. 自定义注解(自定义的注解名称相同的会覆盖原注解) 4.Annotation架构(元注解参数介绍) 1.注解定义 注解是用来将任何的信息或元数据(metadata)与程序元素(类…...

基于粒子群改进BP神经网络的血压评估系统,血压预警系统,pso-bp神经网络

目录 摘要 BP神经网络的原理 BP神经网络的定义 BP神经网络的基本结构 BP神经网络的神经元 BP神经网络的激活函数, BP神经网络的传递函数 粒子群算法的原理及步骤 基于粒子群算法改进优化BP神经网络的血压评估系统 matlab代码 代写下载链接:https://download.csdn.net/downlo…...

Vue中引入外部css导致的全局污染

问题 当在前端使用vue开发时,给特定页面做好了css并且通过import去导入到当前页面;在编译运行之后发现其他页面也受到影响更改了样式,即“全局污染”。 污染方式 单组件污染 单个组件样式,影响到了其他的组件的样式。 单个组件…...

【安装部署】Mysql下载及其安装的详细步骤

1.下载压缩包 官网地址:www.mysql.com 2.环境配置 1.先解压压缩包 2.配置环境变量 添加环境变量:我的电脑--->属性-->高级-->环境变量-->系统变量-->path 3.在mysql安装目录下新建my.ini文件并,编辑my.ini文件 编辑内容如…...

如何循环执行windows和linux上的控制台指令

Linux linux以centos为例做介绍 将以下脚本复制到并命名为repeat.sh #!/bin/bash cmd$1#使用列表for循环 执行1000次相关指令 for variable in seq 1 1000 doecho "execute $variable times "echo $cmd$cmd done 执行指令 ps -ef,执行1000次 sh repeat.sh ps -…...

【Shell】基础语法(三)

文章目录 一、Shell基础语法1. 位置参数和特殊变量2. 输入输出3. 管道4. 文件重定向5. 函数6. 脚本调试方法 二、Shell高级和正则表达式1. sort命令2. uniq命令3. wc命令4. grep命令5. find命令6. xargs7. sed命令8. crontab 一、Shell基础语法 1. 位置参数和特殊变量 $0 …...

linux 服务开机自启

服务开机自启 Centos有两种方式,一是修改/etc/rc.local文件,二是使用chkconfig来管理开机自启(chkconfig无法自启动源码包) # /etc/init.d/目录下必须有启动脚本ls /etc/init.d/httpd# 添加服务,以便让chkconfig指令管理它,开机启…...

【LeetCode】870 . 优势洗牌

870 . 优势洗牌 方法:贪心 思路 这道题的思想类似于 “田忌赛马” ,把 nums1 当成是田忌的马,nums2 当成是齐威王的马。 讨论田忌的下等马(nums1 的最小值): 如果它能比过齐威王的下等马(nums…...

现代C++中的从头开始深度学习【2/8】:张量编程

一、说明 初学者文本:此文本需要入门级编程背景和对机器学习的基本了解。张量是在深度学习算法中表示数据的主要方式。它们广泛用于在算法执行期间实现输入、输出、参数和内部状态。 在这个故事中,我们将学习如何使用特征张量 API 来开发我们的C算法。具…...

uniapp软键盘谈起遮住输入框和头部被顶起的问题解决

推荐: pages.json中配置如下可解决头部被顶起和表单被遮住的问题。 { "path": "pages/debug/protocol/tagWord", "style": { "app-plus": { "soft…...

安防监控视频汇聚EasyCVR平台的FLV视频流在VLC中无法播放的原因排查

众所周知,TSINGSEE青犀视频汇聚平台EasyCVR可支持多协议方式接入,包括主流标准协议国标GB28181、RTSP/Onvif、RTMP等,以及厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。在视频流的处理与分发上,视频监控…...

虹科新闻 | 虹科与Power-MI正式建立合作伙伴关系

近日,虹科与Power-MI正式建立合作伙伴关系,双方就工业预测性维护领域进行深入的交流与合作,未来将共同致力于为亚洲市场提供完整的、更高质量的预测性维护解决方案,解决亚洲客户的工业自动化挑战。 虹科与Power-MI都表示十分期待…...

Xamarin.Android实现加载中的效果

目录 1、说明2、代码如下2.1 图1的代码2.1.1、创建一个Activity或者Fragment,如下:2.1.2、创建Layout2.1.3、如何使用 2.2 图2的代码 4、其他补充4.1 C#与Java中的匿名类4.2 、其他知识点 5、参考资料 1、说明 在实际使用过程中,常常会用到点…...

Leetcode.1559 二维网格图中探测环

题目链接 Leetcode.1559 二维网格图中探测环 rating : 1838 题目描述 给你一个二维字符网格数组 g r i d grid grid ,大小为 m x n ,你需要检查 g r i d grid grid 中是否存在 相同值 形成的环。 一个环是一条开始和结束于同一个格子的长度 大于等于…...

阿拉伯数字转中文数字字符,最高支持千京

直接上代码 UtilityClass public class NumberFormatUtil {/** 中文 -> 数字对应关系 */private static final Map<Character, Integer> DIGIT_CHINA new HashMap<>();/** 数字 -> 中文对应关系 */private static final Map<Integer, Character> DIGI…...

Python基础--序列操作/函数

Python基础 1.序列的操作 2.函数 1. 数据类型的具体操作 1.1 序列操作--列表具体操作&#xff1a; #定义列表 listA [] #定义一个空列表 listB [1,2.8,"你好",listA,[1,2,3]] # 访问列表 print(listB)#查看整个列表 print(listB[2])#查看单个…...

Kafka与Zookeeper版本对应关系

文章目录 了解版本对应Kafka安装包Kafka源码包 了解 比如&#xff1a; kafka_2.11-1.1.1.jar包 其中2.11表示的是Scala的版本&#xff0c;因为Kafka服务器端代码完全由Scala语音编写。”-“后面的1.1.1表示的kafka的版本信息。遵循一个基本原则&#xff0c;Kafka客户端版本和服…...

Arch Linux 使用桥接模式上网

如果我们想要将虚拟机与物理主机同一网段&#xff0c;并且像物理机器一样被其他设备访问&#xff0c;则需要以桥接模式上网&#xff0c;这个时候&#xff0c;物理主机就必须配置为使用网桥上网了。 注意&#xff1a;这里我们使用了 NetworkManager 网络管理工具中的 nmcli 来进…...

Vue 中使用 WebWorker

目录 安装 loader 应用场景 打包时错误处理 安装 loader npm install worker-loader -D 如果直接把worker.js放到public目录下&#xff0c;则不需要安装loader vue.config.js const { defineConfig } require(vue/cli-service)module.exports defineConfig({transpileDe…...

财务管理系统javaweb会计账房进销存jsp源代码mysql

本项目为前几天收费帮学妹做的一个项目&#xff0c;Java EE JSP项目&#xff0c;在工作环境中基本使用不到&#xff0c;但是很多学校把这个当作编程入门的项目来做&#xff0c;故分享出本项目供初学者参考。 一、项目描述 财务管理系统javaweb java,Struts2,bootstrap,mysql,…...

LingBot-Depth-ViT-L14多场景落地:教育科研、智能制造、元宇宙开发三类案例

LingBot-Depth-ViT-L14多场景落地&#xff1a;教育科研、智能制造、元宇宙开发三类案例 1. 引言&#xff1a;从“看见”到“感知”深度 你有没有想过&#xff0c;为什么机器人能避开障碍物&#xff0c;为什么手机能拍出背景虚化的照片&#xff0c;为什么一些AR应用能让虚拟物…...

你的Mask数据集规范吗?Labelme标注避坑指南与质量检查脚本分享

Labelme标注实战&#xff1a;从数据规范到模型效果提升的全流程指南 在计算机视觉项目中&#xff0c;标注数据的质量往往决定了模型性能的上限。许多团队投入大量资源进行数据采集和标注&#xff0c;却因为忽视标注规范而导致模型训练效果不佳。本文将深入探讨如何通过Labelme工…...

一键克隆开发环境,告别配置地狱

核心需求与痛点分析开发/测试环境配置复杂&#xff0c;重复搭建耗时依赖冲突导致环境不一致&#xff0c;引发“在我机器上能运行”问题新成员加入或设备更换时环境迁移成本高技术实现原理容器化技术&#xff08;Docker/LXC&#xff09;封装环境依赖虚拟机快照&#xff08;VMwar…...

从0到1构建企业级AI代码审查中枢(含Kubernetes Operator+策略DSL+审计溯源链):2026奇点大会开源项目DeepAudit v2.0全栈解析

第一章&#xff1a;2026奇点智能技术大会&#xff1a;AI代码审查工具 2026奇点智能技术大会(https://ml-summit.org) 在2026奇点智能技术大会上&#xff0c;多家头部AI工程团队联合发布了新一代开源AI代码审查工具链——Sentinel-Copilot&#xff0c;该工具聚焦于静态语义理解…...

队列迷宫解

迷宫表示&#xff1a; 使用二维数组 mg[][] 表示迷宫 0 表示可通行的路 1 表示墙&#xff08;不可通行&#xff09; 边界用墙包围&#xff0c;防止越界 第一步&#xff1a;初始化 1. 创建空队列 2. 将入口点(e.i, e.j, pre-1)入队 3. 标记入口点为已访问&#xff08;mg[xi][…...

Windhawk终极指南:轻松定制Windows程序的完整解决方案 [特殊字符]

Windhawk终极指南&#xff1a;轻松定制Windows程序的完整解决方案 &#x1f680; 【免费下载链接】windhawk The customization marketplace for Windows programs: https://windhawk.net/ 项目地址: https://gitcode.com/gh_mirrors/wi/windhawk Windhawk是一款革命性的…...

Cursor Pro免费激活终极指南:三步解锁AI编程无限功能

Cursor Pro免费激活终极指南&#xff1a;三步解锁AI编程无限功能 【免费下载链接】cursor-free-vip [Support 0.45]&#xff08;Multi Language 多语言&#xff09;自动注册 Cursor Ai &#xff0c;自动重置机器ID &#xff0c; 免费升级使用Pro 功能: Youve reached your tria…...

Anthropic论文登Nature:AI或通过数字、代码“传染”危险倾向,评估安全需查“族谱”

AI模型或通过数字、代码等“传染”危险倾向刚刚&#xff0c;Anthropic一篇论文登上Nature&#xff0c;曝出一个让整个AI安全圈坐不住的发现&#xff1a;一个「坏」模型随手写的一串数字&#xff0c;就能「带坏」下一个模型&#xff0c;而且根本看不出这串数字哪里有问题。这篇论…...

圣女司幼幽-造相Z-Turbo部署避坑指南:日志排查、WebUI访问、首次加载耗时详解

圣女司幼幽-造相Z-Turbo部署避坑指南&#xff1a;日志排查、WebUI访问、首次加载耗时详解 本文详细讲解使用Xinference部署圣女司幼幽-造相Z-Turbo文生图模型的完整流程&#xff0c;重点解决部署过程中的常见问题&#xff0c;帮助您快速上手这个专门生成牧神记圣女司幼幽图片的…...

基于MedGemma 1。5的智能分诊系统设计与实现

基于MedGemma 1.5的智能分诊系统设计与实现 1. 引言 医院急诊科每天面临大量患者涌入&#xff0c;传统分诊流程依赖护士经验判断&#xff0c;高峰期容易出现等待时间长、分诊准确性不足的问题。一位三甲医院急诊科主任坦言&#xff1a;"每天高峰期&#xff0c;护士需要在…...