注解(Annotation)(一)

Java 注解( Annotation )又称 Java 标注,是 JDK5.0 引入的一种注释机制。
Java 语言中的类、 构造器、 方法、成员变量、参数等都可以被注解进行标注。

自定义注解 --- 格式

自定义注解就是自己做一个注解来使用。

public @interface 注解名称{public 属性类型 属性名() default 默认值;//Java支持的数据类型基本上都支持}
//自定义注解
public @interface MyTest1{String a();boolean b() default true;String[] c();}//应用
@MyTest1(a = "AA", c = {"CA", "CB"})
public class AnnotationTest1{...}

注解的作用

1. Java 中类、方法、成员变量做标记,然后进行特殊处理 ,至于到底做何种处理由业务需求来决定。
2.例如: JUnit 框架中,标记了注解 @Test 的方法就可以被当成测试方法执行,而没有标记的就不能当成测试方法执行。

特殊属性

1. value属性,如果只有一个value属性的情况下 使用value属性的时候可以省略value名称不写!!
2. 但是如果有多个属性,  且多个属性没有默认值,那么value 名称 是不能省略的。
public @interface MyTest2{String value01();}//应用
@MyTest1("value")
public class AnnotationTest2{...}
public @interface MyTest2{String value01();int age default 20;}//应用
@MyTest1("value")
public class AnnotationTest2{...}

注解的原理

元注解

元注解:注解注解的注解。

元注解有两个:

@Target: 约束自定义注解只能在哪些地方使用

@Target可使用的值定义在ElementType枚举类中,常用值如下:

TYPE,类,接口
FIELD, 成员变量
METHOD, 成员方法
PARAMETER, 方法参数
CONSTRUCTOR, 构造器
LOCAL_VARIABLE, 局部变量

@Retention:申明注解的生命周期

@Retention可使用的值定义在RetentionPolicy枚举类中,常用值如下:

SOURCE: 注解只作用在源码阶段,生成的字节码文件中不存在
CLASS:  注解作用在源码阶段,字节码文件阶段,运行阶段不存在,默认值.
RUNTIME:注解作用在源码阶段,字节码文件阶段,运行阶段(开发常用)
//          类,接口            成员变量
@Target({ElementType.TYPE, ElementType.METHOD})
//注解作用在源码阶段,字节码文件阶段,运行阶段(开发常用)
@Retention(RetentionPolicy.RUNTIME)
public @interface MyTest3{...}

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

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

相关文章

Spring 整合 MyBatis 底层源码解析

大家好,我是柳岸花开。今天我们要讲的是 Spring 整合 MyBatis 的底层源码解析。希望大家能更深入理解 Spring 和 MyBatis 的整合原理,并应用到实际项目中。 由很多框架都需要和Spring进行整合,而整合的核心思想就是把其他框架所产生的对象放到…

Lua Table(表)

Lua Table(表) Lua 是一种轻量级的编程语言,广泛用于游戏开发、脚本编写和其他应用程序。在 Lua 中,table(表)是一种非常灵活的数据结构,类似于其他语言中的数组、字典或哈希表。Table 可以用来存储各种类型的值,包括数字、字符串、函数,甚至是其他 table。本文将详细…

IDEA创建lib目录,导入jar

IDEA创建lib目录,导入jar lib第一种创建方法: 当发现项目没有lib目录时,File>>>Project Structure 打开Artifacts目录 lib第二种创建方法: 按需选择需要的jar包或者全选即可 lib第三种创建方法:

大疆Pocket2手持记录仪格式化恢复方法

大疆Pocket系列是手持类产品,此类产品处理过不少,今天来看一个Pocket2误格式化之后的恢复方法。 故障存储:256G存储卡 /文件系统:exFAT 故障现象: 客户描述其经常对存储进行格式化,一般重新拍就会格式化一次,需要恢…

一次基于 rebase 的 PR 提交

目录标题 基于 rebase 的 PR 提交git 命令idea 操作 基于 rebase 的 PR 提交 git 命令 1・git fetch 2・git checkout -b dev2 origin/dev2 新拉分支dev23・date >> 1.txt && git add . && g…

深入浅出談 隐马尔可夫的概念(1/ 2)

文章目录 一、说明二、Markov Chain三、Introduction四、State Sequence五、Comment六、介绍隐藏式马可夫法则。七、隐藏马尔可夫Introduction八、结论 一、说明 在许多机器学习的章节中,常常遇见 HMM ,往往看到它的数学式子后,就当没看到似…

springboot事务操作

事务操作 事务处理就是将一个方法中的全部操作当初一个整体,如果其中一个地方报出异常,我们就需要回滚回之前的操作,防止数据混乱,数据缺失 1、Transactional springboot为我们提供了Transactional注解,该注解可以用于…

2-5 基于matlab的信号的希尔伯特-黄变换

基于matlab的信号的希尔伯特-黄变换,IMF分解,对IMF进行Hilbert处理,绘制二维/三维时-频图,时间-能量图(瞬时能量谱) ,频率-能量图(希尔伯特谱)。程序已调通,可直接运行。 2-5 希尔伯…

Bytebase 2.19.0 - 支持 DynamoDB

Bytebase 2.19.0 支持 DynamoDB 支持独立的 SQL 审核工单。 支持为工单事件配置 Slack 私信通知。 file 支持 PostgreSQL 的 DML 变更事前备份。 为 SQL Server 添加 SQL 审核规则:禁止冗余索引。 重大变更 创建多数据库工单时,不同数据库会共享同…

python之面向对象详解(一)

一.类与对象 1.1类和对象的创建 类提供了创建对象的蓝图。对象是类的实例,拥有类中定义的属性和方法。self 参数是对类实例自身的引用,用于访问类的属性和方法。 案例: 下面举一个“长方形”类的例子,包含长,宽属性…

前端进阶-js查漏补缺

1、部分语法基础 1.1、let、const 特性:// 1、暂时行死区 // 比如有这一个例子 let aa "111" function test(){console.log(aa)let aa "22" } // 会报错引用错误,就是因为在函数test作用域内存在暂时性死区,如果把aa…

python pandas处理股票量化数据:笔记2

有一个同学用我的推荐链接注册了tushare社区帐号https://tushare.pro/register?reg671815,现在有了170分积分。目前使用数据的频率受限制。不过可以在调试期间通过python控制台获取数据,将数据保存在本地以后使用不用高频率访问tushare数据接口&#xf…

Scala的字符串插值

Scala的字符串插值 期待您的关注 ☀Scala学习笔记 目录 Scala的字符串插值 1. s插值器: 2. f插值器: 3. raw插值器: 在Scala中,字符串插值是一种方便的方式,可以在字符串中插入变量或表达式的值。Scala支持三种类型…

Mybatis用Map接收返回值可能出现的问题

先看一个示例 明明定义了Map<String,String> 实际内部存放的是Integer resultType是Map 也就是说Mybatis是通过反射将类型放进去的 躲过了编辑器检查 但是这样取值时候就会报类型转换错误 解决方式 resultMap 另外一种方式 用Number Integer和Double的父类 Ma…

大学生计算机基础题(二)

嗨&#xff0c;大家好&#xff0c;我是异星球的小怪同志 一个想法有点乱七八糟的小怪 如果觉得对你有帮助&#xff0c;请支持一波。 希望未来可以一起学习交流。 一、单选题&#xff08;20小题&#xff0c;共30分&#xff09; 1、已知a2,b3,print((ab)%b)的输出结果为&…

Excel/WPS《超级处理器》功能介绍与安装下载

超级处理器是基于Excel或WPS开发的一款插件&#xff0c;拥有近300个功能&#xff0c;非常简单高效的处理表格数据&#xff0c;安装即可使用。 点击此处&#xff1a;超i处理器安装下载 Excel菜单&#xff0c;显示如下图所示&#xff1a; WPS菜单显示&#xff0c;如下图所示&am…

15.混合专家模型(MoEs)技术揭秘

混合专家模型&#xff08;MoEs&#xff09;技术揭秘 混合专家模型&#xff08;Mixture-of-Experts, MoEs&#xff09;技术发展简史 Mixtral 8x7B &#xff1a;质效并举的稀疏混合专家模型 Mixtral 8x7B &#xff1a;质效并举的稀疏混合专家模型 MoEs 技术发展简史 MoEs 开山…

matplotlib twinx多y轴但单个图例

matplotlib 用 twinx 画多 y 轴参考 [1]。现想在画图例时&#xff0c;多个 y 轴的图例画在一起&#xff0c;写法参考 [2]。本文展示一个简例&#xff0c;效果&#xff1a; Code 要手动指定颜色&#xff0c;否则原 y 轴的用色和新 y 轴会重合。 import matplotlib.pyplot as…

永磁同步直线电机(PMLSM)控制与仿真2-永磁同步直线电机数学模型搭建

文章目录 1、公式总结2、电压方程模型3、运动方程4、推力方程5、转化关系 写在前面&#xff1a;原本为一篇文章写完了永磁同步直线电机数学模型介绍&#xff0c;永磁同步直线电机数学模型搭建&#xff0c;以及永磁同步直线电机三环参数整定及三环仿真模型搭建&#xff0c;但因为…

Dockerfile小技巧(通过变量指定程序配置文件内容)

思路&#xff1a;Dockerfile中定义变量&#xff0c;程序配置文件中使用占位符暂时代替变量内容&#xff0c;最后使用变量值替换占位符实现&#xff0c;这样就可以实现通过定义变量来定义程序启动时的一些参数了。 1、我以构建Nginx镜像为例&#xff0c;作为演示&#xff0c;Do…