注解和反射01--什么是注解
注解
- 什么是注解
- 内置注解
- 元注解
- 自定义注解
什么是注解
1、注解是从JDK5.0开始引入的新技术
2、注解的作用
(1)不是程序本身,可以对程序做出解释(和注释相同)
(2)可以被其他程序读取,比如编译器
3、注解的格式
注解是以“@注释名”在代码中存在的,还可以添加一些参数值,如:@GetMapping(“page-info”)
4、注解在哪里使用
可以附加在package,class,method,field等上面,相当于给他们添加了额外的辅助信息,我们可以通过反射机制编程实现对这些元数据的访问
内置注解
1、@Override:定义在java.lang.Override中,此注释只适用于修辞方法,表示一个方法声明打算重写超类中的另一个方法声明。如果使用此注释类型注释方法,则除非至少满足以下条件之一,否则需要编译器生成错误信息:
(1)该方法将覆盖或实现在超类型中生命的方法。
(2)该方法具有与Object中声明的任何公共方法的覆盖相同的签名。
若将toString改为tostring,就会报错
/*** @Override 重写的注解* @return*/@Overridepublic String toString() {return super.toString();}
2、@Deprecated:定义在java.lang.Deprecated中,此注释可以用于修饰方法,属性,类,标识不鼓励程序猿使用这样的元素,通常是因为他很危险或者存在更好的选择。编译器在不被启用的代码中使用或覆盖不推荐使用的程序元素是发出警告。
我们可以看到,test方法是不被推荐使用的,虽然不推荐但是不代表不可以使用,运行后发现,程序仍然可以输出。
3、@SuppressWarnings:定义在java.lang.SuppressWarnings中,用来抑制编译是的警告信息。与前两个注释有所不同,我们需要添加一个参数才能正确使用,这些参数都是定义好的,我们选择性使用就好了。
(1)@SuppressWarnings(“all”)
(2)@SuppressWarnings(“unchecked”)
(3)@SuppressWarnings(value={“unchecked”,“deprecation”})
(4)…
新建一个未被使用的的方法或对象会发出警告,@SuppressWarnings注解可以压制这些警告。


元注解
元注解的作用就是负责注解其他注解,Java定义了4个标准的meta-annotation类型,他们被用来提供对其他注解类型做说明。这些类型和他们所支持的类在java.lang.annotation包中可以找到。
(1)@Target:用于描述注解的使用范围(即:被描述的注解可以用在什么地方)
(2)@Retention:表示需要再什么级别保存改注释信息,用于描述注解的生命周期。
(3)@Document:说明该注释将被包含在javadoc中。
(4)@Inherited:说明子类可以继承父类的该注解。
自定义注解
使用@interface自定义注解是,自动继承了java.lang.annotation.Annotation接口。
(1)@interface用来声明一个注解,格式:public @interface 注解名(定义内容)。
(2)其中的每一个方法实际上是声明了一个配置参数。
(3)方法的名称就是参数的名称
(4)返回值类型就是参数的类型(返回值只能是基本类型,Class,String,enum)。
(5)可以通过default来声明参数的默认值。
(6)如果只有一个参数成员,一般参数名为value。
(7)注解元素必须要有值,我们定义注解元素使,经常使用空字符串,0作为默认值。
//自定义注解
public class Test {//注解可以显示赋值,如果没有默认值,我们就必须给注解赋值,不然就会报错。@MyAnnotation(age = 19,name = "小王")public void test(){}@MyAnnotation1("李四")public void test2(){}
}@Target({ElementType.TYPE,ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@interface MyAnnotation{String name() default "";int age() default 0;int id() default -1; //如果默认值为-1,代表不存在String[] schools() default {"测试用例","清华大学"};
}@Target({ElementType.TYPE,ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@interface MyAnnotation1{String value();}
相关文章:
注解和反射01--什么是注解
注解 什么是注解内置注解元注解自定义注解 什么是注解 1、注解是从JDK5.0开始引入的新技术 2、注解的作用 (1)不是程序本身,可以对程序做出解释(和注释相同) (2)可以被其他程序读取,…...
虚拟机 RHEL8 安装 MySQL 8.0.34
目录 安装步骤一、清除所有残留的旧MySQL二、安装MySQL 报错问题1. 提示未找到匹配的参数: mysql-community-server2. 公钥问题 安装步骤 一、清除所有残留的旧MySQL 1. 关闭MySQL [rootlocalhost /]# service mysqld stop Redirecting to /bin/systemctl stop …...
kafka 总结宝典
...
跨平台力量:探索C++Qt框架的未来前景
卓越的跨平台支持:CQt可以在多个平台上运行,包括Windows、Mac、Linux、Android和iOS等。这使得开发者能够使用同一份代码构建跨平台的应用程序,从而显著降低了开发成本和时间投入。 丰富的类库和工具:CQt提供了广泛的类库和工具&…...
基于长短期神经网络LSTM的位移监测,基于长短期神经网络的位移预测,LSTM的详细原理
目录 背影 摘要 LSTM的基本定义 LSTM实现的步骤 基于长短期神经网络LSTM的位移监测 完整代码: https://download.csdn.net/download/abc991835105/88098131 效果图 结果分析 展望 参考论文 背影 路径追踪预测,对实现自动飞行驾驶拥有重要意义,长短期神经网络是一种改进党的…...
ChatGPT漫谈(二)
ChatGPT“脱胎”于OpenAI在2020年发布的GPT-3,任何外行都可以使用GPT-3,在几分钟内提供示例,并获得所需的文本输出。GPT-3被认为是当时最强大的语言模型,但现在,ChatGPT模型似乎更强大。ChatGPT能进行天马行空的长对话,可以回答问题,它具备了类人的逻辑、思考与沟通的能…...
【LangChain】检索器之MultiQueryRetriever
MultiQueryRetriever 概要内容总结 概要 基于距离的向量数据库检索在高维空间中嵌入查询,并根据“距离”查找相似的嵌入文档。 但是,如果查询措辞发生细微变化,或者嵌入不能很好地捕获数据的语义,检索可能会产生不同的结果。有时…...
教师ChatGPT的23种用法
火爆全网的ChatGPT,作为教师应该如何正确使用?本文梳理了教师ChatGPT的23种用法,一起来看看吧! 1、回答问题 ChatGPT可用于实时回答问题,使其成为需要快速获取信息的学生的有用工具。 从这个意义上说,Cha…...
【libevent】http客户端1:转存http下载的数据
read_http_input // // HTTP endpoint: GET /rpc/1 (list methods) or POST /rpc/1 (execute RPC) // // JSON-RPC API endpoint. Handles all JSON-RPC method calls. // static void rpc_jsonrpc(evhttp_request *req, void *opaque) {RpcApiInfo *ap =...
Pytorch学习笔记 | 数据类型 | mnist数据集
数据类型 python中数据类型和pytorch中的对应关系 注意:pytorch是没有没有string类型的 例1:创建一个3行4列的随机数数组,符合均值为0,方差为1的正态分布 import torch a=torch.Tensor(3,4) a Out[17]: tensor([[0....
Linux虚拟机(lvm)报Unmount and run xfs_repair
问题 linux系统没有正常关机,今天启动虚拟机无法进入系统,提示metadata corruption deleted at xxxx; Unmount and run xfs_repair 分析 主机异常掉电后里面的虚拟机无法启动,主要是损坏的分区 解决 看出来应该是dm-0分区损坏…...
【ESP32】Espressif-IDE及ESP-IDF安装
一、下载Espressif-IDE 2.10.0 with ESP-IDF v5.0.2 1.打开ESP-IDF 编程指南 2.点击快速入门–>安装–>手动安装–>Windows Installer–>Windows Installer Download 3.点击下载Espressif-IDE 2.10.0 with ESP-IDF v5.0.2 二、安装Espressif-IDE 2.10.0 wit…...
基于vue3实现画布操作的撤销与重做
基于vue3实现画布操作的撤销与重做 前言 vue3项目中实现在canvas画布上实现画节点和连线功能,要求可以撤销重做 思路 canvasBox 画板数据是存放在对象里面; snapshots存放操作记录; curIndex表示当前操作索引的下标; maxLimit表…...
php 抽象工厂模式
1,抽象工厂(Abstract Factory)模式,是创建设计模式的一种,它创建一系列相关的对象,而不必指定具体的类。该模式为一个产品族提供了统一的创建接口。当需要这个产品族的某一系列的时候,可以为此系…...
WPF实战学习笔记13-创建注册登录接口
创建注册登录接口 添加文件 创建文件 MyToDo.Api ./Controllers/LoginController.cs ./Service/ILoginService.cs ./Service/LoginService.cs MyToDo.Share ./Dtos/UserDto.cs LoginController.cs using Microsoft.AspNetCore.Mvc; using MyToDo.Api.Context;…...
银行API安全解决方案
数字经济背景下,外部市场环境的快速变化给商业银行带来很多不确定性,随着银行行业数字化转型进入深水区,银行经营面临新的机遇和挑战。 数字经济是传统银行向开放银行转型发展的重要支撑,开放银行旨在运用数字技术通过开放数据和…...
3d软件动物生活习性仿真互动教学有哪些优势
软体动物是一类广泛存在于海洋和淡水环境中的生物,其独特的形态和生活习性给学生带来了新奇和有趣的学习主题,为了方便相关专业学科日常授课教学,web3d开发公司深圳华锐视点基于真实的软体动物,制作软体动物3D虚拟展示系统&#x…...
<C语言> 字符串内存函数
C语言中对字符和字符串的处理很是频繁,但是C语言本身是没有字符串类型的,字符串通常放在常量字符串或者字符数组中。 字符串常量 适用于那些对它不做修改的字符串函数. 注意:字符串函数都需要包含头文件<string.h> 1.长度不受限制的…...
知网的caj格式怎么转化成pdf格式?两个方法简单快捷!
在使用知网等学术资源时,我们常常会遇到CAJ格式的文件,然而CAJ格式并不是常见的文件格式,给我们的查阅和分享带来一些不便。为了更方便地处理这些文件,我们可以将其转换为常见的PDF格式。在本文中,我将为您介绍两种简单…...
【每日一题】2500. 删除每行中的最大值
【每日一题】2500. 删除每行中的最大值 2500. 删除每行中的最大值题目描述解题思路 2500. 删除每行中的最大值 题目描述 给你一个 m x n 大小的矩阵 grid ,由若干正整数组成。 执行下述操作,直到 grid 变为空矩阵: 从每一行删除值最大的元…...
高性能Windows流媒体服务器部署:5大核心技术与3种实战架构深度解析
高性能Windows流媒体服务器部署:5大核心技术与3种实战架构深度解析 【免费下载链接】srs-windows 项目地址: https://gitcode.com/gh_mirrors/sr/srs-windows 在Windows平台上构建专业级流媒体服务系统,需要综合考虑协议兼容性、性能优化和部署架…...
【DeepSeek开源协议识别权威指南】:20年合规专家亲授3大协议陷阱与5步精准识别法
更多请点击: https://intelliparadigm.com 第一章:DeepSeek开源协议识别的底层逻辑与合规价值 DeepSeek系列模型(如DeepSeek-V2、DeepSeek-Coder)虽以“开源”名义发布,但其实际许可状态需通过结构化协议解析才能准确…...
CUDA并行计算与FSR框架优化实践
1. CUDA并行计算与FSR框架概述在GPU加速计算领域,CUDA(Compute Unified Device Architecture)作为NVIDIA推出的并行计算平台和编程模型,已经成为高性能计算的事实标准。其核心设计理念是将计算任务分解为网格(Grid&…...
HarmonyOS 6学习:解决图片放大后无法移动至边缘的matrix4矩阵变换技巧
从"卡在中间"到"自由拖拽":一次完整的图片缩放平移边界问题攻关在HarmonyOS 6应用开发中,我最近遇到了一个看似简单却让人头疼的图片查看器问题:用户双指放大图片后,想要拖动查看边缘细节,却发现图…...
网飞成立 AI 动画工作室,开启流媒体“原生 AI 制片时代”,中外布局逻辑有何不同?
1. Netflix“偷跑”在影视巨头关于 AIGC 的军备竞赛中,Netflix 再次加速。据外媒 TheVerge 报道,网飞于今年 3 月成立了名为 "INKubator" 的工作室,这是全球流媒体巨头中首个以生成式人工智能为核心的动画制作部门。此动作引发全球…...
微信红包助手终极指南:无需ROOT的智能抢红包解决方案
微信红包助手终极指南:无需ROOT的智能抢红包解决方案 【免费下载链接】WeChatLuckyMoney :money_with_wings: WeChats lucky money helper (微信抢红包插件) by Zhongyi Tong. An Android app that helps you snatch red packets in WeChat groups. 项目地址: ht…...
Claude Code用户告别封号与Token焦虑,无缝切换至Taotoken平台
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Claude Code用户告别封号与Token焦虑,无缝切换至Taotoken平台 对于依赖Claude Code进行编程辅助的开发者而言ÿ…...
基于Atmega 1284P的16位复古计算器:硬件设计与软件实现全解析
1. 项目概述与核心思路最近在整理工作室时,翻出了一堆老旧的7段数码管和矩阵键盘,看着这些充满复古气息的元件,一个想法冒了出来:为什么不自己动手做一台复古风格的计算器呢?不是那种用液晶屏显示的现代计算器…...
观察不同模型在统一 API 下的响应速度与输出风格差异
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 观察不同模型在统一 API 下的响应速度与输出风格差异 在为大语言模型应用选择模型时,开发者通常会关注两个核心维度&am…...
JavaScript对象创建:告别繁琐,四种灵活写法一学就会
在JavaScript里,创建对象的这般方法常把刚开始学习的新手弄得困惑不已,好像无论走哪条道都行得通,可又不清楚该挑哪一条才好。我编写JavaScript都有十几年功夫了,对象创建这事差不多每天都会碰到可谓基础技能。它不像变量声明那般…...
