自定义注解【一】

springboot自定义注解(一) 在整个spring框架中,提供的注解非常的多,这些注解简化了我们的很多操作。那么,我们如何自定义注解呢? 第一步:学习已有的注解 @Target({ElementType.METHOD, ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented @Mapping public @interface RequestMap... 阅读详情

一、背景

虽然经常使用注解,但是之前对于注解的原理什么都不懂,然后看书写了个demo,算是初窥其面目。

二、例子


package cn.sp.test;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface ExceptionTest {
	Class<? extends Exception> value();
}
package cn.sp.test;


public class Sample2 {
	@ExceptionTest(ArithmeticException.class)
	public static void m1(){//Test should pass
		int i=0;
		i=i/i;
	}
	
	@ExceptionTest(ArithmeticException.class)
	public static void m2(){// should fail
		int[] a = new int[0];
		int i = a[1];
	}
	
	@ExceptionTest(ArithmeticException.class)
	public static void m3(){// should fail(no exception)
		
	}
}

package cn.sp.test;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class RunTest {

	public static void main(String[] args) throws Exception {
		int tests = 0;
		int passed = 0;
		Class<?> testClass = Class.forName(args[0]);//cn.sp.test.Sample2
		for (Method m :testClass.getDeclaredMethods()) {
			if(m.isAnnotationPresent(ExceptionTest.class)){
				tests++;
				try {
					m.invoke(null);
					System.out.printf("Test %s failed:no exception%n",m);
				} catch (InvocationTargetException e) {
					Throwable exc = e.getCause();
					Class<? extends Exception> excType = m.getAnnotation(ExceptionTest.class).value();
					if(excType.isInstance(exc)){
						passed++;
					}else{
						System.out.printf("Test %s failed:excepted %s, got %s%n",m,excType.getName(),exc);
					}
				} catch (Exception e) {
					// TODO: handle exception
					System.out.printf("INVALID @Test:"+m);
				}
				
			}
		}
		System.out.printf("Passed:%d ,Failed:%d%n",passed,tests-passed);
	}

}
运行结果:
Test public static void cn.sp.test.Sample2.m3() failed:no exception
Test public static void cn.sp.test.Sample2.m2() failed:excepted java.lang.ArithmeticException, got java.lang.ArrayIndexOutOfBoundsException: 1
Passed:1 ,Failed:2



VisionPro 9.0 QuickBuild里用C#脚本调用Halcon 23.11模型,保姆级图文配置流程 本文详细介绍了如何在VisionPro 9.0 QuickBuild环境中使用C#脚本调用Halcon 23.11深度学习模型,提供从环境配置到模型集成的保姆级图文教程。重点解决图像格式转换、许可证配置等工业视觉检测中的常见问题,帮助开发者快速实现高效、稳定的视觉检测流水线部署。 阅读详情

相关推荐

软件测试面试题汇总

软件测试面试题汇总 测试技术面试题 ........................................................................................................................................................................ 5 1、什么是兼容

晴天的专栏 2万+

注解(一句话解释什么是注解及自定义注解)

什么是注解 个人理解一句话解释什么是注解:注解就是人和服务器都能看懂的语言(相对比注释,注释只有人能看懂),并通过反射可以拿到注解的任何内容。 Java 注解可以通过反射获取注解内容。在编译器生成类文件时,注解可以被嵌入到字节码中。Java 虚拟机可以保留注解内容,在运行时可以获取到注解内容 。 (编译器生成类文件时将注解读取转换成java类) 注解是JDK1.5版本开始引入的一个特性 内置注解 @Override 重写方法 @Deprecated 不推荐程序员使用 会出现横线 @SuppressWa

qq_43321312的博客 357

【SeedLab】Packet Sniffing and Spoofing Lab

本节实验要求:借助Scapy库,实现网络流量的捕获与伪造。

cold_windx的博客 4515

如何查看注解源码_注解深入浅出之自定义注解(一)

更多Android架构进阶视频学习请点击:https://space.bilibili.com/474380680本篇文章将从以下几个内容来阐述注解:[注解][元注解][自定义注解][注解参数默认值]一、注解(ANNOTATIONS)注解将元信息(meta-information)与定义相关联。例如:方法前的注解 @deprecated 会造成编译器在该方法被调用时打印警告信息。object De...

weixin_39952031的博客 4169

从《新程序员》系列看程序员职业发展趋势与成长路径

在信息技术日新月异的当下,软件开发行业蓬勃发展,程序员作为行业的核心力量,其成长与发展路径备受瞩目。《新程序员》系列杂志应运而生,以其前瞻性的视角、丰富多元的内容,为广大程序员尤其是新程序员提供了洞察行业趋势、学习前沿技术、汲取前辈经验的宝贵窗口。该系列杂志由优快云精心打造,自推出以来,便在开发者群体中引发了强烈反响。《新程序员》系列内容涵盖了从基础技术知识的深入解读,到行业前沿趋势的精准预测;从优秀开发者的成长历程分享,到各大企业数字化转型的实践案例剖析等多个维度。

AllenLV的博客 2257

1.3 重叠因子:希尔伯特变换趋势线(Hilbert Transform - Instantaneous Trendline)概念与Python实战

希尔伯特变换趋势线(Hilbert Transform - Instantaneous Trendline)是一种基于希尔伯特变换的高级技术分析工具。它使用数字信号处理技术来识别价格的主导周期,并生成一条平滑的趋势线。这种方法可以有效过滤市场噪音,提供更准确的趋势信号。

Kewin的博客 2084

注解(一):内置注解和自定义注解

一、什么是注解 Annotation是从JDK5.0开始引入的技术。 Annotation的作用 本身不是程序,可以对程序作出解释。(这一点和注释没有区别) 可以被其他程序(比如:编译器等)读取。(注解信息处理流程(注解解析),是注解和注释的重大区别。如果没有注解信息处理流程,则注解毫无意义)。 Annotation在哪里使用 可以附加在package,class,method,field等...

henrly的博客 793

网络抓包实战:如何捕获与解析802.1Q VLAN标签报文

在网络通信中,数据包是信息传输的基本单元,而VLAN(虚拟局域网)技术通过在数据链路层插入802.1Q标签,实现了网络流量的逻辑隔离与高效管理。其核心原理是在标准以太网帧头中嵌入4字节的VLAN标识,使交换机能够根据VID(VLAN ID)进行精准转发。掌握VLAN报文的捕获与解析技术,对于网络故障排查、安全审计和性能优化具有重要价值,尤其在需要验证网络隔离策略或诊断Trunk链路异常时。本文聚焦于使用Wireshark工具,结合端口镜像等实操方法,详细演示如何抓取并解读携带802.1Q标签的原始报文,帮助

weixin_33417488的博客 382

注解深入浅出之自定义注解(一)

更多Android架构进阶视频学习请点击:https://space.bilibili.com/474380680 本篇文章将从以下几个内容来阐述注解: [注解] [元注解] [自定义注解] [注解参数默认值] 一、注解(ANNOTATIONS) 注解将元信息(meta-information)与定义相关联。例如:方法前的注解 @deprecated 会造成编译器在该方法被调用...

AndroidAlvin的博客 376

Java电商秒杀系统性能优化(一)——电商秒杀系统框架回顾

电商秒杀系统框架回顾项目简介外部依赖框架回顾项目要点项目中存在的问题小结 课程是免费的,课程地址如下:SpringBoot搭建电商秒杀项目,课程真的很棒,作者的思路很清晰,建议各位读者可以跟着视频练习一下这个项目; 项目简介 通过SpringBoot快速搭建的前后端分离的电商基础秒杀项目。项目通过应用领域驱动型的分层模型设计方式去完成:用户otp注册、登陆、查看、商品列表、进入商品详情以及倒计时秒...

ghw15221836342的博客 3720

【AI智能体】Langchain 主流大模型调用与对话API使用详解

【AI大模型】Langchain 模型调用与对话API使用详解

congge_study的博客 406

一丶自定义的注解

1.Spring自定义注解: public @interface MyAnnotation { } 自定义的的注解需要添加元注解(或者一些默认的值配置) 常用的4种元注解: java.lang.annotation提供了四种元注解,专门注解其他的注解(在自定义注解的时候,需要使用到元注解): @Target –注解用于什么地方,默认值为任何元素,表示该注解用于什么地方。可用的Eleme...

weixin_42030357的博客 181

YOLOv11改进 | 添加注意力篇 | 结合2024最新Mamba注意力机制MLLA助力yolov11有效涨点含二次创新C2PSA(全网独家首发改进)

本文给大家带来的改进机制是结合号称超越Transformer架构的Mamba架构的最新注意力机制MLLA,本文将其和我们YOLOv11进行结合,的原理是通过将Mamba模型的一些核心设计融入线性注意力机制,从而提升模型的性能。具体来说,MLLA主要整合了Mamba中的“忘记门”(forget gate)和模块设计(block design)这两个关键因素,同时MLLA通过使用位置编码(RoPE)来替代忘记门,从而在保持并行计算和快速推理速度的同时,提供必要的位置信息。

Snu77的博客 3870

自定义注解(一)

以前都是使用各种注解,最近的项目中,使用到了自定义注解,在这里记录一下。 自定义注解很简单,只要使用@interface就可以了 package org.ygy.demo.annotation; public @interface Hello{ String value(); String info(); } 下面在介绍一下,在自定义注解时会用到的 @Target:限定注解

什么是江湖? 1259

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

【Java】自定义注解(一),类中属性注解

这里写自定义目录标题前言基础业务场景描述功能实现开始一、自定义注解:@DoubleFormat二、自定义json序列化解析三、Controller测试业务扩展扩展业务场景描述改造注解改造解析器插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你...

小java备忘 4522

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

@override注解_注解深入浅出之自定义注解(一)

更多Android架构进阶视频学习请点击:https://space.bilibili.com/474380680本篇文章将从以下几个内容来阐述注解:[注解][元注解][自定义注解][注解参数默认值]一、注解(ANNOTATIONS)注解将元信息(meta-information)与定义相关联。例如:方法前的注解 @deprecated 会造成编译器在该方法被调用时打印警告信息。object De...

weixin_42131261的博客 490

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Java 自定义一权限路径注解

Java 自定义一权限路径注解 自定义一注解 @Target({ElementType.TYPE, ElementType.FIELD, ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) // 运行时有效 @Inherited public @interface RequiredPermission { } 注解拦截器 ...

忙碌的吴小二博客 1万+

java注解(一):什么是注解?什么是元注解?如何自定义注解?注解的原理是什么?

本篇文章主要是介绍注解的概念、原理,以及通过代码演示4种元注解、如何自定义注解。通过反编译的形式进一步认识注解的本质。

raining优快云的博客 2027

java 注解禁用_自定义 Jackson 注解与禁用某一特定的注解

一、jacksonjackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json、xml转换成Java对象。最新的版本到2.8,稳定版为2.7从Jackson 2.0起,核心组件包括:jackson-annotations(带注释的数据绑定包)。jackson-core(流式的解析器和生成器)。jackson-databind(对象映射器,JSON树模型)。1、java...

weixin_29550689的博客 1209

Java自定义注解[一]

1:注解【Annotation】是JDK1.5之后新增的重要特性,通过注解,程序开发人员可以在不改变原有逻辑的情况下,在源文件中嵌入一些补充的信息。 Annotation可以用来修饰类,属性,方法,而且Annotation不影响程序的运行,无论是否使用Annotation代码都可以正常的执行。 java.lang.annotation.Annotation是Annotation的接口,只要是A...

小熊来了 6535

注解一 自定义注解和元注解

自定义注解和元注解 转: https://www.cnblogs.com/gmq-sh/p/4798194.html

kxh1123的博客 207

自定义注解那些事(一)

自定义注解那些事 一、自定义注解 二、自定义注解可以被继承吗? 三、动态代理会导致自定义注解丢失吗? 1.获取自定义注解的可靠方式 2.AnnotatedElementUtils工具类源码解析 3.AnnotationUtils和AnnotatedElementUtils工具类区别 四、扩展 1.Controller可增加事务注解吗? 五、参考

搬山境KL攻城狮的修炼手册 787

【java】实现自定义注解校验——方法一

编写注解类时,需要用到元注解来规定注解的实现方式等;/*** @Description 基础校验注解*/ //Target注解是指定当前自定义注解可以使用在哪些地方,这里仅仅让他可以使用在字段上;@Target(ElementType . FIELD) //指定当前注解保留到运行时;/*** 最小长度/*** 最大长度/*** 非空校验/*** 字典校验/*** 非法字符校验* 特殊字符:ascii码表中除字母、数字外的所有字符,顿号(、),间隔号(·)

m0_46459413的博客 3464

Java注解(一):注解介绍及自定义注解入门

Java注解(一):注解介绍及自定义注解入门目录Java注解一注解介绍及自定义注解入门目录 前言 什么是注解Annotation 为什么要引入注解 正式开始学习自定义注解 元注解 Target 2Retention Documented Inherited Repeatable 注解参数定义 前言现如今框架开发不断的增加注解去替代许多原本的XML配置,打开任意一个框架的源码库都能看见聆郎满目、各式各

纯洁如玉凯乐君的博客 533

一小时搞明白自定义注解(Annotation)

*本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 原文链接:http://blog.youkuaiyun.com/u013045971/article/details/53433874 什么是注解         Annotation(注解)就是Java提供了一种元程序中的元素关联任何信息和着任何元数据(metadata)的途径和方法。Annotion(注解)是一个接口,程序可以通过...

顾明伟 4万+
上一篇: 同步访问共享数据【Effective java第10章】
下一篇: 线程死锁问题
2YSP
博客等级 码龄10年 12粉丝 34原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值