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

注解和反射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)可以被其他程序读取&#xff0c…...

虚拟机 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语言中对字符和字符串的处理很是频繁&#xff0c;但是C语言本身是没有字符串类型的&#xff0c;字符串通常放在常量字符串或者字符数组中。 字符串常量 适用于那些对它不做修改的字符串函数. 注意&#xff1a;字符串函数都需要包含头文件<string.h> 1.长度不受限制的…...

知网的caj格式怎么转化成pdf格式?两个方法简单快捷!

在使用知网等学术资源时&#xff0c;我们常常会遇到CAJ格式的文件&#xff0c;然而CAJ格式并不是常见的文件格式&#xff0c;给我们的查阅和分享带来一些不便。为了更方便地处理这些文件&#xff0c;我们可以将其转换为常见的PDF格式。在本文中&#xff0c;我将为您介绍两种简单…...

【每日一题】2500. 删除每行中的最大值

【每日一题】2500. 删除每行中的最大值 2500. 删除每行中的最大值题目描述解题思路 2500. 删除每行中的最大值 题目描述 给你一个 m x n 大小的矩阵 grid &#xff0c;由若干正整数组成。 执行下述操作&#xff0c;直到 grid 变为空矩阵&#xff1a; 从每一行删除值最大的元…...

通俗解释什么是(ip、网段、端口)

通俗解释什么是&#xff08;ip、网段、端口&#xff09; 1&#xff1a;什么是IP&#xff1f; IP地址被用来给Internet上的电脑一个编号。IP地址是一个32位的二进制数&#xff0c;通常被分割为4个“8位二进制数”&#xff08;也就是4个字节&#xff09;&#xff0c;IP地址通常…...

PyTorch quantization observer

文章目录 PyTorch quantization observerbasic classstandard observersubstandard observer PyTorch quantization observer basic class nameinheritdescribeObserverBaseABC, nn.ModuleBase observer ModuleUniformQuantizationObserverBaseObserverBase standard observ…...

垃圾回收之三色标记法(Tri-color Marking)

关于垃圾回收算法&#xff0c;基本就是那么几种&#xff1a;标记-清除、标记-复制、标记-整理。在此基础上可以增加分代&#xff08;新生代/老年代&#xff09;&#xff0c;每代采取不同的回收算法&#xff0c;以提高整体的分配和回收效率。 无论使用哪种算法&#xff0c;标记…...

Individual household electric power consumption个人家庭用电量数据挖掘与时序预测建模

今天接到一个任务就是需要基于给定的数据集来进行数据挖掘分析相关的计算&#xff0c;并完成对未来时段内数据的预测建模&#xff0c;话不多少直接看内容。 官方数据详情介绍在这里&#xff0c;如下所示&#xff1a; 数据集中一共包含9个不同的字段&#xff0c;详情如下&#…...

实验三 贪心算法

实验三 贪心算法 迪杰斯特拉的贪心算法实现 优先队列等 1.实验目的 1、掌握贪心算法的基本要素 &#xff1a;最优子结构性质和贪心选择性质 2、应用优先队列求单源顶点的最短路径Dijkstra算法&#xff0c;掌握贪心算法。 2.实验环境 Java 3.问题描述 给定带权有向图G (V…...

详解go的hex.Encode原理

简言 今天看nsq的messageID生成的时候&#xff0c;发现它使用了hex.Encode函数来产生编码&#xff0c;那就顺道研究一下这个编码方式。 原理 hex是16进制的意思&#xff0c;encode是进行编码的意思&#xff0c;内部实现也很简单&#xff0c;就是 每4位计算出十六进制的值&a…...

R730服务器用光盘安装系统(Esxi系统)

准备阶段&#xff1a;dell R730服务器&#xff0c;本教程一般适用于dell所有服务器&#xff0c;移动光盘&#xff0c;光碟做好镜像系统。在这里我安装的系统是Esxi系统&#xff0c;其他操作系统类似&#xff0c;只是安装的步骤不一样而已。 1、将系统盘插入光驱(移动光盘)&…...

SpringCloud nacos 集成 gateway ,实现动态路由

&#x1f388; 作者&#xff1a;Linux猿 &#x1f388; 简介&#xff1a;CSDN博客专家&#x1f3c6;&#xff0c;华为云享专家&#x1f3c6;&#xff0c;Linux、C/C、云计算、物联网、面试、刷题、算法尽管咨询我&#xff0c;关注我&#xff0c;有问题私聊&#xff01; &…...

flutter:角标

角标应该非常常见了&#xff0c;以小说app为例&#xff0c;通常会在小说封面的右上角上显示当前未读的章数。 badges 简介 Flutter的badges库是一个用于创建徽章组件的开源库。它提供了简单易用的API&#xff0c;使开发者可以轻松地在Flutter应用程序中添加徽章效果。 官方文…...

基于JAVA SpringBoot和Vue高考志愿填报辅助系统

随着信息技术在管理中的应用日益深入和广泛&#xff0c;管理信息系统的实施技术也越来越成熟&#xff0c;管理信息系统是一门不断发展的新学科&#xff0c;任何一个机构要想生存和发展&#xff0c;要想有机、高效地组织内部活动&#xff0c;就必须根据自身的特点进行管理信息时…...