java注释的详尽解析

news2024/11/16 15:49:52

一、什么是注解

(1).注解的作用

①:注解一般用于对程序的说明,就像注释一样,但是区别是注释是给人看的,但是注解是给程序看的。
②:让编译器进行编译检查的作用,比如下边这个@Override注解是重写的意思,子类重写了父类的方法,但是改动了方法名,所以报错。
在这里插入图片描述

(2).注解的格式

注解是以“@注释名”在代码当中存在的,还可以添加一些参数值,例如 @SuppressWarnings(value = “unchecked”)

(3).注解在哪里使用

可以附加在package、class、method、field等上面,相当于给他们添加了额外的辅助信息。我们可以通过反射的方式对这些注解进行访问。

二、注解的类型

一般常用的注解分为三类:

(1).内置注解

①:@Override:修辞方法的,表示一个方法重写了父类方法
在这里插入图片描述
②:@Deprecated:修辞方法、属性、类,表示不鼓励程序员使用这样的元素,通常是因为它很危险或存在更好的选择。通俗来说就是遗弃。
在这里插入图片描述
③:@SuppressWarnings:用来抑制编译时的警告信息,括号里的的值包括

 a.deprecation:使用了过时的类或方法的警告
 b.unchecked:执行了未检查时的转换时的警告,集合就是未指定泛型
 c.fall through:当在switch语句使用时发生case穿透
 d.path:在类路径、源文件路径等中有不存在路径的警告
 e.serial:可序列化类上缺少serialVerisonUID定义时的警告
 f.finally:任何finally橘子不能完成时的警告
 g.all:以上所有情况的警告。
      一个 @SuppressWarnings("all"),
      多个 @SuppressWarnings(value={"all","path"})

在这里插入图片描述
在这里插入图片描述

(2).元注解

元注解是用于注解的注解,在JDK 1.5中提供了4个标准的用来对注解类型进行注解的注解类
①:@Target注解(用来描述注解的使用范围,即注解可以使用在什么地方,在定义注解的时候使用这个我们可以更加清晰的知道它的使用范围)

public enum ElementType {
  
    TYPE,              //类,接口

    FIELD,            //成员变量

    METHOD,          //方法

    PARAMETER,       //方法参数

    CONSTRUCTOR,    //构造方法

    LOCAL_VARIABLE,     //局部变量

    ANNOTATION_TYPE,      //注解类
    
    PACKAGE,           // 包

    TYPE_PARAMETER,     //类型参数

    TYPE_USE      //使用类型的任何地方
}

②:@Retention注解(表示这个注解在什么时候还有效 , 用于描述注解的生命周期)

public enum RetentionPolicy {
    SOURCE, // 源文件保留
    CLASS,  // 编译期保留,默认值
    RUNTIME // 运行期保留,可通过反射去获取注解信息,咱们自定义的类一般使用这个
}

案例
在这里插入图片描述
③:@Documented 这个注解只是用来标注生成javadoc的时候是否会被记录(了解就好)。
在这里插入图片描述
④:@Inherited注解的作用是:使被它修饰的注解具有继承性 (学完反射读取注解以后在细说)

(3).自定义注解

①:@interface是用来声明一个注解的,格式public @interface 注解名{定义内容}
②:其中的每一方法实际上是声明了一个配置参数
③:方法的名称就是参数的名称
④:返回值类型就是参数的类型(返回值类型只能是基本数据类型,Class,String,enum)
⑤:可以通过default来声明参数的默认值
⑥:如果只有一个参数成员,一般参数名称为value
⑦:注解参数必须有值,我们自定义注解元素时,经常使用空字符串,0作为默认值

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、注解实现

(1).自定义注解实现类

@Retention(RetentionPolicy.RUNTIME) //元注解:定义自定义注解的生命周期 ---》在运行期间保留
@Target(value = {ElementType.TYPE}) //元注解:定义自定义注解的作用返回 ---》只能作用在类上边
public @interface WebServlet {
    String urlMapping() default "";    
}

(2).在一个类上使用注解

@WebServlet(urlMapping = "/third")
public class ThridServlet   {
     
}

(3).利用反射获取注解信息

//利用反射获取注信息
public static void getMessage() throws  Exception {
    Class  clazz = Class.forName("com.qcby.MyServletDemo.FirstServlet");
    //获取注解信息
    WebServlet webServlet = (WebServlet) clazz.getDeclaredAnnotation(WebServlet.class);

    System.out.println(webServlet.urlMapping());
}

public static void main(String[] args) throws Exception {
    getMessage();
}

在这里插入图片描述

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

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

相关文章

漏洞复现-蓝凌LandrayOA系列

蓝凌OA系列 🔪 是否利用过 优先级从高到低 发现日期从近到远 公司团队名_产品名_大版本号_特定小版本号_接口文件名_漏洞类型发现日期.载荷格式LandrayOA_Custom_SSRF_JNDI漏洞 LandrayOA_sysSearchMain_Rce漏洞 LandrayOA_Custom_FileRead漏洞

成功解决TypeError: ‘str‘ object does not support item assignment

成功解决TypeError: ‘str’ object does not support item assignment 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程👈 …

Linux系统安装及简单操作

目录 一、Linux系统安装 二、Linux系统启动 三、Linux系统本地登录 四、Linux系统操作方式 五、Linux的七种运行级别(runlevel) 六、shell 七、命令 一、Linux系统安装 场景1:直接通过光盘安装到硬件上(方法和Windows安装…

一篇论文回顾 Sora 文生视频技术的背景、技术和应用。

一篇论文回顾 Sora 文生视频技术的背景、技术和应用。 追赶 Sora,成为了很多科技公司当下阶段的新目标。研究者们好奇的是:Sora 是如何被 OpenAI 发掘出来的?未来又有哪些演进和应用方向? Sora 的技术报告披露了一些技术细节&…

反编译修改halcondonet.dll的名字

安装ILSpy 打开halcondonet.dll 用VS打开 点击生成Dll会提示很多错误 然后点击错误,所有点一遍,错误基本会自己消失, 还需要把.net改为4.5.2 然后生成成功 把名称改为mysql5dotnet 找到HalconAPI类,将里面的所有字符串“hal…

linux下改变主机名,永久生效的方法

hostnamectl set-hostname test 例子 #支持大写必须就要这样写 hostnamectl set-hostname 名称 --static

LCR 164. 破解闯关密码

解题思路&#xff1a; 贪心 class Solution {public String crackPassword(int[] password) {String[] strs new String[password.length];for(int i 0; i < password.length; i)strs[i] String.valueOf(password[i]);Arrays.sort(strs, (x, y) -> (x y).compareTo(…

全球参考系统(WRS)概述及常用工具汇总

1986年&#xff0c;美国航空航天局&#xff08;NASA&#xff09;定义了一系列数据处理"级别"&#xff0c;用以区分源于其地球观测系统&#xff08;EOS&#xff09;卫星获取的影像生成的标准数据产品。给定任何数据产品&#xff0c;我们可以根据其级别来判断其在生产过…

Docker下Jenkins打包java项目并部署

docker 构建Jenkins sudo docker run --namezen_haslett --userjenkins --privilegedtrue --volume/home/cyf/server/jenkins/jenkins_home:/var/jenkins_home -v /usr/lib/jvm/java-17-openjdk-amd64:/usr/lib/jvm/java-17-openjdk-amd64 -v /usr/lib/maven/apache-mav…

Qt初识 - 编辑框 | 按钮 | 命名规范

目录 一、编辑框 (一) Designer中的编辑框 (二) Code中的编辑框 二、按钮 (一) Designer中的按钮 (二) Code中的按钮 三、Qt中的命名规范 一、编辑框 (一) Designer中的编辑框 进入到Designer界面中 找到Input Widgets目录 找到该目录下的 将这个控件拉出去 双击就可…

AntV L7的符号地图

本案例使用L7库和Mapbox GL JS添加符号地图。 文章目录 1. 引入 CDN 链接2. 引入组件3. 创建地图4. 创建场景5. 添加符号6. 创建点数据7. 创建点图层8. 演示效果9. 代码实现 1. 引入 CDN 链接 <script src"https://unpkg.com/antv/l7"></script> <scr…

数据中台:数字中国战略关键技术设施

文章目录 每日一句正能量前言为何要建设数据中台数据中台建设痛点数据中台学习资料聚焦前沿&#xff0c;方法论体系更新与时俱进&#xff0c;紧跟时代热点深入6大行业&#xff0c;提炼实践精华大咖推荐&#xff0c;数字化转型必备案头书购买链接赠书活动 每日一句正能量 人生之…

算法学习07:KMP算法

算法学习07&#xff1a;KMP算法 文章目录 算法学习07&#xff1a;KMP算法前言一、KMP算法1.kmp匹配过程&#xff1a;2.求解next数组&#xff08;kmp算法重点&#xff09;3.代码总结 前言 提示&#xff1a;以下是本篇文章正文内容&#xff1a; 一、KMP算法 1.kmp匹配过程&…

集合框架(一)List系列集合

特点 有序&#xff0c;可重复&#xff0c;有索引。 LIst集合的特有方法 /** 目标&#xff1a;掌握List系列集合的特点&#xff0c;以及其提供的特有方法* */import java.util.ArrayList; import java.util.List;public class ListTest1 {public static void main(String[] arg…

第十篇 - 如何利用人工智能技术做好营销流量整形管理?(Traffic Shaping)- 我为什么要翻译介绍美国人工智能科技巨头IAB公司

IAB平台&#xff0c;使命和功能 IAB成立于1996年&#xff0c;总部位于纽约市​​​​​​​。 作为美国的人工智能科技巨头社会媒体和营销专业平台公司&#xff0c;互动广告局&#xff08;IAB- the Interactive Advertising Bureau&#xff09;自1996年成立以来&#xff0c;先…

CorelDRAW2024最新版本号25.0.0.230安装包下载

CorelDRAW2024是一款专业的平面设计软件&#xff0c;以矢量图形编辑与排版为核心功能。它凭借对高级操作系统的支持、多监视器查看和4K显示屏的兼容性&#xff0c;使得无论是初始用户还是图形专家&#xff0c;都能自信快速地交付专业级结果。 CorelDRAW 2024的主要特点包括其直…

人工智能|机器学习——k-近邻算法(KNN分类算法)

1.简介 k-最近邻算法&#xff0c;也称为 kNN 或 k-NN&#xff0c;是一种非参数、有监督的学习分类器&#xff0c;它使用邻近度对单个数据点的分组进行分类或预测。虽然它可以用于回归问题&#xff0c;但它通常用作分类算法&#xff0c;假设可以在彼此附近找到相似点。 对于分类…

小程序学习

一、第一天 1、小程序体验 2、注册账号 小程序 (qq.com) 3、开发工具下载 下载 / 稳定版更新日志 (qq.com) 4、目录结构 "navigationBarBackgroundColor": "#00b26a" 配置头部背景色 4、wxml模板介绍 5、wxss 6、js文件 7、宿主环境 1、通信主体 2…

开发知识点-Apache Struts2框架

Apache Struts2 介绍S2-001S2CVE-2023-22530 介绍 Apache Struts2是一个基于MVC&#xff08;模型-视图-控制器&#xff09;设计模式的Web应用程序框架&#xff0c;它是Apache旗下的一个开源项目&#xff0c;并且是Struts1的下一代产品。Struts2是在Struts1和WebWork的技术基础…

el-table-column嵌套el-form-item不能进行校验问题解决

项目为vue3elementPlus开发的项目 业务要求&#xff1a;table表格展示数据&#xff0c;其中有一行是ip地址可展示可修改&#xff0c;此处要求增加自定义校验规则 先看一下效果&#xff1a; 此处先描述一下&#xff0c;问题出在了哪里&#xff0c;我将el-table的data,使用一个…