自定义注解【一】

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



详解Unity中的粒子系统Particle System (三) 上一篇我们详细讲解了有关主模块的全部内容,已经对粒子系统的基本运作有了足够的了解,本篇就来讲一下被粒子系统默认启用的Emission、Shape、Renderer模块又在粒子系统中扮演着怎么样的作用吧。 阅读详情

相关推荐

DeepSeek+Coze扣子搭建智能体(保姆级教程)

DeepSeek+Coze扣子搭建智能体(保姆级教程)

yizhen91y的博客 1万+

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

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

qq_43321312的博客 357

从零构建MAVLink通信:PX4飞控与QGC的协议握手全解析

本文详细解析了PX4飞控与QGC地面站通过MAVLink协议进行通信的全过程,重点介绍了航点传输协议的状态机设计、INT类型消息的优化优势以及异常处理与调试技巧。通过实战案例和性能优化建议,帮助开发者高效构建无人机通信系统,提升数据传输效率与稳定性。

weixin_29209805的博客 504

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

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

weixin_39952031的博客 4169

Transformer代码(Pytorch实现和详解)!!!

这个是第一版,有些代码如果不对,欢迎在评论指正,后续会慢慢改,我也是刚接触transformer,若有些地方理解不对还请指正。

xml的博客 5612

大模型时代的具身智能系列专题(二)

自由形式语言指令 L 指定了一个操作问题,例如“打开最顶部的抽屉”。然而,根据 L 生成机器人轨迹是很困难的,因为 L 可能具有任意长度,或者是不明确的(例如,需要上下文语义)。相反,我们专注于问题的各个阶段(子任务)l_i,它们明确地指定了一个操作任务 (例如,“抓住抽屉把手”,“打开抽屉”),其中被分解的子阶段(子任务)L→l1l2lnL→l1​l2​...ln​由高级规划器(例如,一个LLM或一个基于搜索的规划器)给出。

achao的专栏 2171

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

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

henrly的博客 793

分享一下如何使用labelimg制作自己的YOLO数据集

首先准备一下自己的下准备一个空文件夹用于保存标签文件,如下图所示。

skywalkerxhx的博客 831

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

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

AndroidAlvin的博客 376

C++实现设计ATM机系统

这个示例实现了一个基本的ATM机系统,支持注册、登录、存款、取款、查询余额和保存数据等功能。当然,这只是一个简单的ATM机模拟,实际的ATM机系统需要更复杂的逻辑和更严格的安全措施。C++编写一个简单的ATM机系统,我将提供一个基本的实现示例,但由于ATM机系统的复杂性和安全性要求,这只是一个简单的模拟,不适合在实际环境中使用。试设计一简单模拟ATM机系统,系统以菜单方式工作,采用自定义函数设计各功能模块被主菜单调用,使之能提供以下基本选项。=========欢迎使用ATM=========

走向CTO的路上... 1243

【短距离通信】【WiFi】精讲802.11n/ac/ax mpdu和ampdu最大长度

在 Wi-Fi 标准(802.11n、802.11ac 和 802.11ax)中,和是数据传输的核心概念。理解它们各自的作用以及不同标准下的最大长度限制,有助于深入了解 Wi-Fi 的性能优化机制。以下是对802.11n802.11ac和802.11ax中MPDU和A-MPDU最大长度的详细技术分析和对比。1. MPDU 和 A-MPDU 的基本概念MPDU 是经过 MAC 层处理后的数据单元,主要由MAC层数据帧和物理层的传输头部(PHY headers)组成。

风云说通信 1108

一丶自定义的注解

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

weixin_42030357的博客 181

基于方差分解分析气象/水文干旱驱动因素(含MATLAB全代码)

简介基于方差分解方法分析气象/水文干旱驱动因素

WW、forever的博客 801

自定义注解(一)

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

什么是江湖? 1259

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

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

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

小java备忘 4522

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

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

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

weixin_42131261的博客 490

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

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、付费专栏及课程。

余额充值