java 自定义Annotation步骤

 

  1)自定义Annotation接口,如下所示

 

@Retention(RetentionPolicy.RUNTIME) 
@Target(ElementType.METHOD)
public @interface MyAnnotation {
	String name()    default "[defaultMethod]";
}

 

  其中RetentionPolicy表示指定保留多长的注释,其取值范围为

 

CLASS
          编译器将把注释记录在类文件中,但在运行时 VM 不需要保留注释。
RUNTIME
          编译器将把注释记录在类文件中,在运行时 VM 将保留注释,因此可以反射性地读取。
SOURCE
          编译器要丢弃的注释。

 

  ElementType代表什么情况下使用注释类型是合法的

 

ANNOTATION_TYPE
          注释类型声明
CONSTRUCTOR
          构造方法声明
FIELD
          字段声明(包括枚举常量)
LOCAL_VARIABLE
          局部变量声明
METHOD
          方法声明
PACKAGE
          包声明
PARAMETER
          参数声明
TYPE
          类、接口(包括注释类型)或枚举声明

 

(2)自定义类,在类中调用使用自定义注解

public class MyNameClass {
	
	@MyAnnotation(name="test1")
	public void testOne(){
		System.out.println("testOne");
	}
	@MyAnnotation(name="test2")
	public void testTwo(){
		System.out.println("testTwo");
	}
	@MyAnnotation(name="test3")
	public void testThree(){
		System.out.println("testThree");
	}
	
}

 (3)主方法,在主方法中通过反射调用此类

 

public class TestMain {

	/**
	 * @param args
	 */
	public static void main(String[] args) throws Exception{
		
		Object obj = Class.forName("com.test.annotation.MyNameClass").newInstance();
		for (Method m : obj.getClass().getMethods()) {
			if (m.isAnnotationPresent(MyAnnotation.class)) {
				try {
System.out.println(m.getAnnotation(MyAnnotation.class).name());
				    //TODO 在业务中需要添加的功能,如登录验证、缓存等等等等
					m.invoke(obj);
				} catch (Exception ex) {
                    ex.printStackTrace();
				}
			}
		}
	  }
}

 

   我们在实际开发中可以通过Spring框架完成拦截,自定义类继承MethodInterceptor类,重载invoke方法,具体可以根据业务需要去写

Java自定义AnnotationProcessor处理自己的Annotation 如下,定义了一个MyMethodAnnotation}使用关键字@interface定义了MyMethodAnnotation,它可以保存三个值。注意,Annotation的属性编译时处理的注解,它的类型是RetentionPolicy.CLASS;Retention的保留类型还有另外两种,RetentionPolicy.SOURCE和RetentionPolicy.RUNTIME。2.Target注解使用的目标,ElementType.METHOD表示这个注解是使用在方法上的。... 阅读详情

相关推荐

别再死磕USB HID了!用ESP32的Arduino框架手把手教你实现蓝牙鼠标键盘(附完整代码)

本文详细介绍了如何使用ESP32的Arduino框架实现蓝牙HID设备,包括鼠标和键盘的快速开发。通过现成的库和示例代码,开发者可以轻松打造自定义蓝牙外设,无需复杂的USB HID协议栈,适用于演示控制器、宏键盘等多种场景。

weixin_31309419的博客 260

Java 自定义annotation使用示例

Annotation 是一种用于描述数据的一种数据,在Java里所描述的数据指的是Java的程序代码,主要目的是为了让第三者能够从这些annotation当中得到一些信息,但也能用于实现某种业务上的操作,比如Spring中使用到的那些annotation,鄙人就是想像Spring那样使用annotation而作这篇笔记。   自定义一个annotation,TestMyAnno.java: ...

gwoham的专栏 271

手把手教你用Chrome DevTools逆向分析抖音a_bogus参数(附完整日志插桩方法)

本文详细介绍了如何使用Chrome DevTools逆向分析抖音a_bogus参数的生成逻辑,包括XHR断点定位、日志插桩追踪和加密核心逻辑解析。通过实战案例,帮助开发者掌握逆向工程技巧,应对抖音接口的动态加密变化,特别适合研究dy接口和a_bogus参数的技术人员。

weixin_27741699的博客 787

Java注解(Annotation)的基本原理以及实现自定义注解

在我们使用springboot的时候我们知道因为注解的存在,使得我们的开发变得格外的方便、快捷。之前的文章Spring常用注解大全,值得你的收藏!!!对于spring中各类注解也进行过介绍。然而注解也并不是因为spring框架的兴起才出现的,而是很早就已经在java中被使用。 Java 注解(Annotation)又称 Java 标注,是从 Jdk1.5 开始被添加到 Java中 的。Java 中的类、方法、变量、参数和包等都可以被标注。和 Javadoc 不同,Java 标注可以通过反射获取标注内容。在编

江夏、的博客 2302

刷题单向链表

实现一个数据结构,维护一张表(最初只有一个元素 11)。接下来 qq 行,每行表示一次操作,操作具体间题目描述。a[i] 里面放的是下一个元素,为0代表链表结束。如单链表1->4 -> 2->3->0用数组表示是。对于每个操作 2,输出一个数字,用换行隔开。第一行一个整数 qq 表示操作次数。

power的专栏 1714

2026 AI编程环境安装指南:从下载、部署到流式验证

AI编程环境已不再是传统软件安装,而是融合硬件兼容性、模型运行时与IDE插件协同的系统工程。其核心原理在于:本地GPU驱动需匹配量化运行时(如Ollama v0.3+对CUDA 12.1+的强制要求),协议层依赖gRPC流式响应,生态层则要求插件签名与模型源可信校验。这一技术组合显著提升AI代码生成的实时性与生产就绪度,支撑微服务开发、CI/CD智能补全、本地LLM推理等关键场景。本文聚焦AI编程软件下载与安装过程中的可复现部署实践,覆盖macOS/WSL2双平台、NVMe模型加速、离线校验及原子化功能验证

weixin_30480075的博客 583

Java自定义注解@interface

自定义注解 步骤 第一步,用@interface定义注解: 在类中声明可以去掉public public @interface Report { } 第二步,元注释配置注解 @Target 最常用的元注解是@Target。使用@Target可以定义Annotation能够被应用于源码的哪些位置: 类或接口:ElementType.TYPE; 字段:ElementType.FIELD; 方法:ElementType.METHOD; 构造方法:ElementType.CONSTRUCTOR; 方法参

weixin_44223977的博客 756

BUUCTF reverse题解汇总

BUUCTF平台刷题过程中做的一些逆向题解的总结归类

于高山之巅,方见大河奔涌;于群峰之上,更觉长风浩荡。 1万+

java中自定义注解的作用和写法

Java注解是附加在代码中的一些元信息,用于一些工具在编译、运行时进行解析和使用,起到说明、配置的功能。 注解不会也不能影响代码的实际逻辑,仅仅起到辅助性的作用。包含在 java.lang.annotation 包中。 自定义注解中需要包括四个元注解:@Retention @Target @Document @Inherited四种。 1、@Retention: 定义注解的保

Java、node 9936

Android Settings 设置Preference置灰显示

使Preference置灰显示,不能点击。先调用Preference的setEnabled(false),再调用setShouldDisableView(true); 如果使置灰项恢复正常可点击,可调用setEnabled(true)。

随风而动 1048

在 SAP 中启用应收/应付“代扣税(Withholding Tax)”功能,本质上是激活并配置“扩展代扣税(Extended Withholding Tax)”模型

摘要:SAP中启用应收/应付代扣税功能需完成3个层级12个核心步骤:1)全局激活公司代码代扣税功能;2)配置代扣税规则、税率和科目,包括定义税种类型、代码、总账科目等;3)在供应商/客户主数据中关联代扣税设置。完成后系统可在发票或付款环节自动计算并过账代扣税,支持多税种并行计算和税率年度调整,最终生成税务报表。常见问题排查需检查公司代码激活状态和主数据配置。(149字)

金牌架构师 836

java annotation自定义注解步骤

自定义注解的语法要求 @Target({ElementType.METHOD}) // 作用域 CONSTRUCTOR FIELD  LOCAL_VARIABLE METHOD   PACKAGE   PARAMETER   TYPE @Retention(RetentionPolicy.RUNTIME)//生命周期,source,class,runtime,@Inherited  //允许子类继...

淡淡的博客 648

海康视觉算法平台VisionMaster 4.3.0 C# 二次开发01 加载方案并获取结果

第一次使用海康视觉算法平台VisionMaster 4.3.0,项目中要使用这个平台进行视觉处理并获取结果。

StevenChen的博客 7874

java_反射与Annotation

在java.lang.reflect.AccessibleObject(java.lang.Class)类中提供有如下与Annotation有关的方法: 取得全部Annotation: public Annotation[] getAnnotations() 取得指定的Annotation: public T getAnnotation (Class annotationClass...

tt 博客 312

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

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

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Annotation与工厂设计模式

一、先自定义一个Annotation import java.lang.annotation.Retention; import static java.lang.annotation.RetentionPolicy.RUNTIME; //先定义一个自定义注解 @Retention ( RUNTIME ) @interface MyAnnotation1{ public Class...

beststudent_的博客 202

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Java必备:基本Annotation

 Java必备:基本Annotation 一、Annotation简介  从Java1.5开始,Java增加了元数据(MetaData)的支持,也就是Annotation(注释);  Annotation能被用来为程序元素(类、方法、成员变量等)设置元数据;  Annotation不能影响程序代码的执行,无论添加、删除Annotation,代码

shenxiuwen1989的专栏 458

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Annotation

Annotation现在应用的非常广泛,常见的说法是模版代码(个人的理解就是接口和实现,也就是说所有的子类都继承统一的接口,实现接口中定义的方法)是使用Annotation的一个例子,呵呵,看了一下,感觉不是很明白,但自己感觉除了人云亦云的好处之外,自己感觉到的好处就是一个方法在

weihuaruan的专栏 457

Java中实现自定义的注解处理器(Annotation Processor)

在之前的《简单实现ButterKnife的注解功能》中,使用了运行时的注解实现了通过编写注解绑定View与xml。由于运行时注解需要在Activity初始化中进行绑定操作,调用了大量反射相关代码,在界面复杂的情况下,使用这种方法就会严重影响Activity初始化效率。而ButterKnife使用了更高效的方式——Annotation Processor来完成这一工作。 Annotation Pr

RickyXE 2万+

java Annotation 基础(转)

        Java 从1.5开始提供了 Annotation (注释,标注),它用来修饰应用程序的元素(类,方法,属性,参数,本地变量,包、元数据),编译器将其与元数据一同存储在 class 文件中,运行期间通过 Java 的反射来处理对其修饰元素的访问。Annotation 仅仅用来修饰元素,而不能影响代码的执行。只有通过其配套的框架或工具才能对其信息进行访问和处理。         ...

wangpingjing的博客 122

Java基础之注解186 什么是Annotation187 自定义Annotation188反射读取注解信息与定义注解的注解

目录 1、认识Annotation 2、系统定义的Annotation 3、自定义Annotation 4、Retention和RetentionPolicy 5、反射与Annotation 6、@Documented注解 7、@Target注解 8、@Inherited注解 1、认识Annotation JDK1.5开始,Java增加了对元数据(即类的组成单元数据)的支持,也就是(Annota...

C_time的博客 333

aop + annotation + log4j实现java日志收集管理

aop + annotation + lombok实现java日志收集管理 在日常的开发中,日志模块应该是我们接触比较多的。 梳理一下的如何使用aop+annotation实现一个简单的日志。 话不多说,直接上代码: 引入依赖 <!-- 引入 aop --> <dependency> <groupId>org.springframework.boot</groupId> <artifactI

Mr_going的博客 518

java annotation processing tools(APT)实例解析

java annotation processing tools(APT)实例解析                                               ------使用APT处理Annotation 转自:http://blog.sina.com.cn/s/blog_4c925dca0100hsyt.html   APT(Annotation proc

white__cat的专栏 6012

java 自定义注解处理器_[转]Java中实现自定义的注解处理器

在之前的《简单实现ButterKnife的注解功能》中,使用了运行时的注解实现了通过编写注解绑定View与xml。由于运行时注解需要在Activity初始化中进行绑定操作,调用了大量反射相关代码,在界面复杂的情况下,使用这种方法就会严重影响Activity初始化效率。而ButterKnife使用了更高效的方式——Annotation Processor来完成这一工作。Annotation Proc...

weixin_42524004的博客 445

JAVA APT处理Annotation

JAVA APT处理Annotation 使用APT处理Annotation   APT(Annotationprocessing tool) 是一种处理注释的工具,它对源代码文件进行检测找出其中的Annotation,使用Annotation进行额外的处理。Annotation处理器在处理Annotation时可以根据源文件中的Annotation生成额外的源文件和其它的文件(文件具体内容由

1042

Java:自定义Annotation

一、自定义Annotation步骤  使用@interface关键字定义新的Annotation  //定义一个简单的Annotation类型 public @interface Test{ }  用于修饰程序的类、方法、变量、接口等定义  //使用@Test修饰类定义 @Test public class MyClass{ }

1024工场 2534

Java自定义Annotation,通过反射解析Annotation

Java自定义Annotation,通过反射解析Annotation 创建一个自定义的Annotation import java.lang.annotation.*; import java.lang.reflect.Method; @Documented @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) p...

三三两两的博客 270
上一篇: java BIO NIO AIO 理论篇
下一篇: 【转】Linux下面安装lighttpd 1.5.0
Program_newbie
博客等级 码龄18年 0粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值