注解(Java程序的一种特殊“注释”,用于工具处理的标注)

news2024/11/19 5:48:40

1.使用注解

a.含义

        i.注解是放在类,字段,方法,参数前的一种特殊“注释”。
        ii.注释会被编译器直接忽略,注解则可以被编译器打包带进class文件,因此,注解是一种用于标注的“元数据”。
        iii.从JVM角度看,注解对代码逻辑没有任何影响,如何使用注解完全由工具决定。

b.三类注解

        i.由编译器使用的注解,不会编译进.class文件,编译后被编译器扔掉;如:@Override、@SuppressWarnings。
        ii.由工具处理.class文件使用的注解,有些工具在加载class的时候,对class动态处理实现特定功能。这类注解会被编译进.class文件,加载结束后不会加载进JVM,被底层库使用,无需处理。
        iii.程序运行期读取的注解,加载后一直存在于JVM中,最常用的注解。(Java代码读取注解实现功能,JVM并不识别该注解)

c.注意

        i.定义注解时,配置参数类型:
                1.所有基本类型;
                2.String;
                3.枚举;
                4.所有基本类型,String,枚举以及Class的数组。
        ii.注解配置参数必须是常量,所以定义注解时就确定了所有参数的值,正常每个参数都有默认值,如果不设置就使用默认值。
        iii.如果参数名称是value且只有一个参数,那么可以省略参数名称。

2.定义注解

a.含义     

        用@interface来定义注解。注解的参数类似无参方法,用default设定一个默认值(强烈推荐),最常用的参数应命名为value(有且只有它时可以省略参数名称)。

b.元注解(修饰其他注解的注解)

        i.@Target(最常用)
                定义源码被应用于哪些位置。
                1.ElementType.TYPE:类或接口或枚举或Record。
                2.ElementType.FIELD:成员变量字段。
                3.ElementType.METHOD:方法。
                4.ElementType.CONSTRUCTOR:构造方法。
                5.ElementType.PARAMETER:方法参数。
                6.ElementType.LOCAL_VARIABLE:局部变量。
                7.ElementType.ANNOTATION_TYPE:注解。
                8.ElementType.PACKAGE:包。

        ii.@Retention(默认CLASS期间)
                定义了注解的生命周期。
                1.RetentionPolicy.SOURCE:仅编译期间。
                2.RetentionPolicy.CLASS:仅class文件。
                3.RetentionPolicy.RUNTIME:程序运行期(自定义常用!)

        iii.@Documented
                是否将注解信息添加到javadoc文档中。
        iv.@Repeatable(注解可重复,不常用)
                修饰的注解,可在同位置使用多个同样的注解。

        v.@Inherited(继承)
                定义子类是否可继承父类定义的注解。仅针对@Target(ElementType.TYPE)类型的注解有效,并且仅针对class的继承,对interface的继承无效。

c.如何定义注解

        i.使用@interface定义注解类。
        ii.添加参数、默认值;把最常用的参数定义为value(),所有参数都尽量设置默认值。
        iii.添加元注解;必须设置@Targer和@Retention,@Retention一般设置为RUNTIME。

3.处理注解

a.注意

        i.所有注解都是class,都继承自java.lang.annotation.Annotation。
        ii.读取注解,要使用反射,反射API通过Class实例封装了类的所有信息。

b.获取注解 

        i.判断某个注解是否存在于Class、Field、Method或Constructor。
                1.Class.isAnnotationPresent(注解.Class)
                2.Field.isAnnotationPresent(注解.Class)
                3.Method.isAnnotationPresent(注解.Class)
                4.Constructor.isAnnotationPresent(注解.Class)
        ii.用反射API获取注解。
                1.Class.getAnnotation(注解.Class)
                2.Field.getAnnotation(注解.Class)
                3.Method.getAnnotation(注解.Class)
                4.Constructor.getAnnotation(注解.Class)

c.使用注解

        i.定义了注解,本身对逻辑程序没有任何影响,我们自己编写代码来使用注解,JVM不会自动给注解添加任何处理逻辑。
                1.定义注解。

                2.使用注解。

                3.编写代码来使用注解。

4.常用注解

a.@RequestBody和@RequestParam()

        i.@RequestParam()
                1.一般与get请求一起使用,一个方法中可以有多个,用来接收普通参数。
                2.加上该注解,表示参数必传,并且指定前端传过来的参数名。
                3.可以通过required = false设置参数为非必传,非必传时可设置默认值defaultValue = "0"。
        ii.@RequestBody
                1.一般与post请求一起使用,一个方法中只能有一个,用来接收json格式的数据。
                2.将json数据转化成Map形成的key-value键值对
        iii.注意
                1.如果不是放在请求体里可以用@RequestParam()接收,也可以什么都不写。

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

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

相关文章

链路聚合(Link Aggregation)

链路聚合(Link Aggregation),也被称为端口聚合(Port Aggregation)、捆绑(Bonding)或团队(Teaming),是一种将多个网络接口结合成一个逻辑接口,以提…

网页模板该怎么选

选择网页模板是建立一个成功网站的关键步骤之一。一个合适的网页模板可以提高用户体验,提升网站的专业度,并使内容更易于阅读。在选择网页模板时,需要考虑多个因素,包括网站类型、目标受众、内容类型以及个人品味。以下是一些建议…

【时时三省】(C语言基础)指针进阶 例题7

山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省 二维数组 第一个a 因为它有12个元素 每个元素占4个字节 所以就打印48 第二个a[0][0] 表示是第一行第一个元素 所…

35岁嫌老,65嫌年轻,程序员还有路子吗?

如今,延迟退休的概念越来越被人们所接受和认同。35岁嫌老,65嫌年轻成为了当下社会的新趋势。然而,对于那些本来就存在着35岁危机的程序员们来说,如何应对这一挑战,迎接新的职业生涯呢? 在这篇文章中&#…

出处不详 投篮

目录 投篮题目描述背景输入输出数据范围 题解解法 打赏 投篮 题目描述 背景 现在你得到了一个可以阻拦投篮的宝物,它会在投球后把篮球传送回运动员手上,但是宝物的成功率和篮球在空中运动的时间有关,并且在特定的时间点成功的几率是固定的…

大势智慧与山东省国土测绘院签署战略合作协议

9月6日,山东省国土测绘院(后简称山东院)与武汉大势智慧科技有限公司(后简称大势智慧)签署战略合作协议。 山东院院长田中原、卫星应用中心主任相恒茂、基础测绘中心主任魏国忠、卫星应用中心高级工程师张奇伟&#xf…

S32G EB tresos AutoCore下载和激活方法

文章目录 1. 下载1.1 EB tresos AutoCore下载1.2 EB激活工具(EB_Client_License_Administrator)下载 2 安装3 激活4 展示 本文将介绍EB tresos的AutoCore(CP BSW配置工具)和MCAL驱动安装包的下载、安装和激活方法。 更多AUTOSAR C…

lightdm , xrandr , startx 桌面管理器,窗口管理器

问题: 了解这几个的含义。 显示服务器 这个不是很明白 显示管理器, 知道就行了,也不是很明白。 窗口管理器。 桌面管理器。 这个其实就是 桌面环境了, 我们的板卡上使用的是xface 。 这个 xface 是一个集合,这里面…

JavaScript --函数的作用域(全局和局部)

全局作用域 全局作用域&#xff0c;就算不在一个script标签也能调用 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta nam…

计算左边(比自己小的元素)的最长距离

前言&#xff1a;一般做的题目都是使用单调栈来求出距离这个点最近的那个比这个数大或小的元素&#xff0c;但是如果是需要找到最远的那个元素呢&#xff1f;我们可以用到类似逆序对的思路&#xff0c;我们先进行排序从小到大&#xff0c;接着我们先处理左边&#xff0c;每次维…

RSTP/MSTP 笔记和配置实验

RSTP: Rapid Spanning Tree Protocol &#xff08;802.1w&#xff09; 一、问题: Why RSTP 可以快速切换&#xff1f; 1、端口角色增加: 两种到五种 从 STP 的两种角色: DP&#xff1a;Designated Port RP&#xff1a;Root Port 增加到了五种角色&#…

亚信安全出席第21届中国网络安全年会 荣获4项重量级荣誉

近日&#xff0c;第21届中国网络安全年会暨国家网络安全宣传周网络安全协同治理分论坛在广州召开。年会以“协同共建网络安全防御体系”为主题&#xff0c;与2024年度国家网络安全宣传周活动衔接联动。亚信安全受邀出席年会&#xff0c;一举荣获CNVD年度最具价值漏洞报送、CNVD…

MySQL查询执行(四):查一行也很慢

假设存在表t&#xff0c;这个表有两个字段id和c&#xff0c;并且我在里面插入了10万行记录。 -- 创建表t CREATE TABLE t (id int(11) NOT NULL,c int(11) DEFAULT NULL,PRIMARY KEY (id) ) ENGINEInnoDB;-- 通过存储过程向t写入10w行数据 delimiter ;; create procedure idat…

C++速通LeetCode简单第11题-对称二叉树

递归法&#xff1a; /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) …

探索螺钉设计:部分螺纹与全螺纹,哪种更适合你的项目?

为什么有些螺钉有部分螺纹? 螺钉由头部、柄部和尖端组成&#xff0c;是世界上zui常用的紧固件之一。与螺栓一样&#xff0c;它们旨在将多个对象或表面连接在一起。但是&#xff0c;在比较不同类型的螺钉时&#xff0c;您可能会注意到其中一些都具有部分螺纹杆。 什么是螺柄&a…

第3篇:【系统分析师】数据库系统

基本概念 三级模式-两级映像 数据库设计 掌握数据库设计的步骤顺序&#xff0c;以及各个阶段的产出物。在逻辑结构设计中做范式处理 数据库模型 E-R模型 关系模型 关系代数&#xff08;sql语言&#xff09; 规范化 函数依赖&#xff0c;键与约束&#xff0c;模式分解 范式 …

国家网信办就人工智能生成合成内容标识征求意见

国家互联网信息办公室发布《人工智能生成合成内容标识办法&#xff08;征求意见稿&#xff09;》&#xff0c;该办法根据《中华人民共和国网络安全法》、《互联网信息服务算法推荐管理规定》、《互联网信息服务深度合成管理规定》、《生成式人工智能服务管理暂行办法》等法律法…

【案例71】配置https之后 IE打不开登陆页面 Uclient没有问题

问题现象 配置https之后 IE打不开登陆页面 Uclient没有问题。 jvm控制台 显示如下 basic: 已调整小应用程序大小且已将其添加到父容器中 basic: PERF: AppletExecutionRunnable - applet.init() BEGIN ; jvmLaunch dt 170755 us, pluginInit dt 722531 us, TotalTime: 89328…

教你制作动态可以点击的PDF样本图册

普通的PDF文档虽然方便&#xff0c;但静态的页面往往难以满足一些展示和功能性的需求。今天&#xff0c;就让我来带你了解一下如何制作动态可点击的PDF样本图册&#xff0c;让我们的PDF文档焕发新的活力&#xff01; 首先&#xff0c;我们需要明确制作动态可点击PDF的目的是什…

【MPC】无人机模型预测控制复现Data-Driven MPC for Quadrotors项目(Part 1)

无人机模型预测控制复现Data-Driven MPC for Quadrotors项目 参考链接背景和问题方法与贡献实验结果安装ROS创建工作空间下载RotorS仿真器源码和依赖创建Python虚拟环境下载data_driven_mpc仓库代码下载并配置ACADO求解器下载并配置ACADO求解器的Python接口下载并配置rpg_quadr…