java中的注解

news/2024/5/2 23:43:49/文章来源:https://blog.csdn.net/Crezfikbd/article/details/126905674

1. 认识注解

注解:即 Annotation ,是从 JDK 5.0 开始引入的东西,不是什么新玩意了

作用:(1)对程序做出解释(2)可以被其它程序读取

格式:以 “@注解名称” 的形式在代码中存在,如 @Override 、@SuppressWarnings(value=“unchecked”)

使用场景:可以附加在包、类、方法、属性这些东西上面,相当于给这些东西添加额外的辅助信息,后面可以通过反射机制编程实现对这些元数据的访问

2. 内置注解

@Override

这个注解定义在 java.lang.Override 中,适用于修饰方法,表示一个方法打算重写超类中的另一个方法

@Deprecated

这个注解定义在 java.lang.Deprecated 中,可以用于修饰方法、属性或者类

被这个注解所修饰的方法、属性或者类,表示不建议再去使用,要用更佳的选择

@SuppressWarnings

这个注解定义在 java.lang.SuppressWarnings 中,用于抑制编译时的警告信息

与前面两个注解不同的是,要使用这个注解,得为它添加参数,而需要的参数已经定义好,可以直接选择,例如:

  • @SuppressWarnings(“all”)
  • @SuppressWarnings(“unchecked”)
  • @SuppressWarnings(value={“unchecked”,“deprecation”})

3. 元注解

元注解的作用:用于标注其它注解,对其它注解作出说明

java 定义了 4 个标准的元注解,分别是 @Target、@Retention、@Documented、@Inherited

  • @Target:用于描述注解的使用范围(如被描述的注解是用在类上、方法上还是属性上)
  • @Retention:表示需要在什么级别保存该注解信息,用于描述注解的生命周期(SOURCE < CLASS < RUNTIME)
  • @Documented:说明该注解将被包含在 javadoc 中
  • @Inherited:说明子类可以继承父类中的该注解

元注解,一般是在自定义注解的时候会使用到,而且 4 个元注解,并不需要同时一起使用,需要用到哪个就加哪个,例如下面的 @Autowired 直接的定义

在这里插入图片描述

4. 自定义注解

自定义一个注解 @MyAnnotation

package com.javabasic.annotation;import java.lang.annotation.*;/*** @Description 自定义注解* @InterfaceName MyAnnotation* @Author yuhuofei* @Date 2022/9/18 11:26* @Version 1.0*/
@Target({ElementType.TYPE, ElementType.METHOD})
@Documented
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {/*** 描述信息*/String value() default "";
}

在代码中使用自定义的注解

package com.javabasic.annotation;/*** @Description 测试自定义注解的使用* @ClassName TestAnnotation* @Author yuhuofei* @Date 2022/9/18 11:32* @Version 1.0*/
public class TestAnnotation {@MyAnnotation(value = "打印出两个整数之和")public static void printResult() {int a = 39;int b = 54;int result = a + b;System.out.println(result);}public static void main(String[] args) {printResult();}
}

自定义注解的描述信息不会在控制台打印出来,自定义注解的用途在反射、自定义切面时会有很好的体现

要点:

  • @interface 用来定义一个注解,格式 public @interface 注解名 { 定义的内容 }
  • 注解中的每一个方法就是一个配置参数
  • 注解中,方法的名称就是参数的名称,返回值类型就是参数的类型
  • 默认值可以通过 default 来声明
  • 如果注解中只有一个参数,一般参数名为 value
  • 注解元素必须要有值,一般用空字符串、0 作为默认值

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

English语法_关系代词 - that

Contents1> 关系代词通常用that1.1> 先行词前有“最高级”1.2> 先行词前有“序数”1.3> 先行词前有 "人物"1.4> 先行词前有 "疑问词"1.5 > 先行词前有 “all,no,every,any ”1.5 > 先行词前有 “the only, the same, the very”2>…

Python实现支持向量机SVM分类模型(SVC算法)并应用网格搜索算法调优项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 目前各大新闻网站很多&#xff0c;网站上的消息也是各式各样&#xff0c;本项目通过建立支持向量机分类…

项目采购管理过程

项目采购管理过程围绕合同进行&#xff0c;采购管理过程所涉及的各种活动构成了合同生命周期。通过对合同生命周期进行积极管理&#xff0c;并仔细斟酌合同条款和条件的措词&#xff0c;就可以回避或减轻某些可识别的项目风险&#xff0c;或将它们转移给对方。签订产品或服务合…

Python使用MINIMAX实现自动吃豆人

使用MINIMAX实现自动吃豆人 一、实现 MINIMAX 说白了这题就是要实现 MINIMAX&#xff0c;算法的伪代码如下(借用 PPT 的内容)&#xff1a; 图 1 算法伪代码流程 算法的核心在于 MIN 和 MAX 的套娃调用&#xff0c;以及判断退出的条件&#xff0c;这也是我自己在实现的时候遇到…

nodejs+vue+elementui人才信息招聘网python java

注册登录 系统管理员模块&#xff1a;用户的管理、公司管理(审核)、职位管理(审核),简历的管理(审核)、修改密码。 企业管理模块&#xff1a;公司信息、发布招聘、修改密码、搜索简历.收藏简历,. 审核 个人申请的位置,邀请面试 个人管理模块&#xff1a;修改密码 我的简历、搜索…

Opencv项目——信用卡数字识别Python代码实现

一、模板图像处理 &#xff08;1&#xff09;灰度图、二值图转化 template cv2.imread(C:/Users/bwy/Desktop/number.png) template_gray cv2.cvtColor(template, cv2.COLOR_BGR2GRAY) cv_show(template_gray, template_gray)# 形成二值图像&#xff0c;因为要做轮廓检测 r…

doris环境部署(小白上手+部署适用)

重要:doris不支持单机部署,至少三副本 集群部署策略: 节点1配置FE(Leader):192.168.30.37节点2配置 BE:192.168.30.40节点4配置BE:192.168.30.41节点3配置BE:192.168.30.42 环境部署开始 1、需要安装 Java 运行环境(JDK最低版本要求是8),要检查你所安装的 Java 版本安…

机器学习入门一

应用领域监督学习和无监督学习监督学习回归问题分类问题无穷的处理无监督学习概念聚类算法鸡尾酒会算法模型描述代价函数代价函数是什么简化代价函数进行可视化理解完整代数函数图像&#xff08;高线图表示&#xff09;梯度下降算法过程梯度函数表达式梯度下降函数的更新规则线…

Android修行手册 - TabLayout全解析(上)-常用方法

往期文章分享点击跳转>《导航贴》- Unity手册&#xff0c;系统实战学习点击跳转>《导航贴》- Android手册&#xff0c;重温移动开发 &#x1f449;关于作者 众所周知&#xff0c;人生是一个漫长的流程&#xff0c;不断克服困难&#xff0c;不断反思前进的过程。在这个过…

BP神经网络简单应用实例,bp神经网络的应用案例

BP神经网络在地面沉降预测中的应用 地面沉降是多种自然和人为因素共同作用的结果。 各种要素发生作用的时空序列、影响强度和方向以及它们之间的关系处于不断变化之中&#xff0c;同时各因素的变化及其影响并不是单方面的&#xff0c;各变量之间相互形成制约关系&#xff0c;…

牛掰!完美诠释Netty!腾讯强推599页Netty进阶神技

Netty 作为一个学Java的&#xff0c;如果没有研究过Netty&#xff0c;那么你只能算一个初等Java程序员。如果你想知道Nginx是怎么写出来的&#xff0c;如果你想知道Tomcat和Jetty是如何实现的&#xff0c;如果你想实现一个简单的Redis服务器&#xff0c;那都应该好好理解一下Ne…

[需求管理-3]:什么是需求分析?常用的需求分析的流程与方法

作者主页(文火冰糖的硅基工坊)&#xff1a;文火冰糖&#xff08;王文兵&#xff09;的博客_文火冰糖的硅基工坊_CSDN博客 本文网址&#xff1a;https://blog.csdn.net/HiWangWenBing/article/details/126855421 目录 第1章 什么是需求分析 1.1 概述 1.2 需求分析的本质 1.…

go-cqhttp调用接口

目录调用接口一、 概述1、 简介2、 接口二、 接入权限系统1、 智能聊天2、 戳一戳3、 新成员三、 调用接口1、 查找接口2、 调用接口3、 接入机器人 调用接口 一、 概述 1、 简介 在我们实现了权限控制功能后,那么我们就在也不用担心机器人话太多,同时,平时又没时间,电脑又…

openSmile 在 Linux 下的安装教程与使用示例

目录openSMILE 工具简介Linux 上的安装步骤使用示例后续openSMILE 工具简介 一款以命令行形式运行的工具&#xff0c;通过配置config文件&#xff0c;主要用于音频特征的提取。官网&#xff1a;https://www.audeering.com/research/opensmile/ &#xff08;当前是3.0版本&…

Oracle中的用户和表空间

文章目录Oracle中的用户和表空间一、用户和表空间简介二、用户1、系统用户登录1.1、数据库在本机时1.2、数据库在远程时1.3、案例2、查看登录用户2.1、命令2.2、案例3、解锁与锁定用户3.1、命令3.2、案例4、使用scott用户登录4.1、命令4.2、案例三、表空间1、表空间数据字典2、…

解决从PDF复制文字后乱码问题

背景 需要从PDF复制文字出来做笔记&#xff0c;可是谁知道PDF通过adobe打开后复制出来后是乱码&#xff0c;如下图所示&#xff1a; 解决 尝试过安装字体&#xff0c;可惜没卵用。 方法1-CAJViewer打开 用该软件打开后复制&#xff0c;可以完美复制&#xff0c;但是有个小问题…

Fastformer: Additive Attention Can Be All You Need

创新点:本文根据transformer模型进行改进,提出了一个高效的模型,模型复杂度呈线性。 主要改进了注意力机制,出发点在于降低了注意力矩阵的重要程度,该方法采用一个(1*T)一维向量替换了原始T*T大小的注意力矩阵。注意力结构图: 在这里,输入同样通过不同的线性映射得到Q…

Vue23全面知识总结七(2)

感兴趣的朋友可以去我的语雀平台进行查看更多的知识。 https://www.yuque.com/ambition-bcpii/muziteng 7.8 路由的props配置 props作用&#xff1a;让路由组件更方便的收到参数 {name:detail,path:detail/:id,component:Detail,//第一种写法&#xff1a;props值为对象&…

Java内存模型:创建对象在堆区如何分配内存

一、Heap堆区 Heap堆是JVM所管理的内存中最大的一块区域&#xff0c;被所有线程共享的一块内存区域。堆区中存放对象实例和数组&#xff0c;“几乎”所有的对象实例以及数组都在这里分配内存。 新生代、老年代 二、创建对象的内存分配 初始创建对象会在新生代的Eden区生成&…

行为型设计模式之策略模式

行为型设计模式之策略模式策略模式应用场景优缺点主要角色策略模式的基本使用创建抽象策略角色创建具体策略角色创建上下文角色客户端执行策略模式实现支付方式的选择创建抽象策略角色创建具体策略角色创建上下文角色客户端执行策略模式 策略模式&#xff08;Strategy Pattern)…