具体使用Java注解的方式

具体使用Java注解的方式

1.使用预定义注解: 预定义注解是Java提供的一些内置注解,可以直接在代码中使用。例如,@Override、@Deprecated、@SuppressWarnings等。

@Override
public void run() {// 重写父类的run()方法// ...
}@Deprecated
public class OldClass {// ...
}@SuppressWarnings("unchecked")
public List<SomeClass> getSomeList() {// ...
}

2.创建自定义注解: 如果想要自定义注解,需要使用@interface关键字,并指定注解的元素。

@Retention(RetentionPolicy.RUNTIME) // 指定注解保留到运行时
@Target(ElementType.METHOD) // 指定注解适用于方法
public @interface MyAnnotation {String value();int count() default 1;
}

3.然后在需要使用该注解的地方进行注解的引用,指定注解的元素值。

public class MyClass {@MyAnnotation(value = "example", count = 5)public void myMethod() {// ...}
}

4.在运行时,可以使用反射来获取注解的信息。

MyClass obj = new MyClass();
Method method = obj.getClass().getMethod("myMethod");
MyAnnotation annotation = method.getAnnotation(MyAnnotation.class);
String value = annotation.value(); // 获取注解的元素值
int count = annotation.count();

demo

package com.lidaochen.test;public class CJavaTest {public void eat(){System.out.println("我喜欢吃西瓜!");}
}
package com.lidaochen.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.TYPE)
public @interface Pro {String className();String methodName();
}
package com.lidaochen.test;import java.io.BufferedReader;
import java.io.FileReader;
import java.lang.reflect.Method;
import java.util.Properties;@Pro(className = "com.lidaochen.test.CJavaTest", methodName = "eat")
public class CJavaDemo {public static void main(String[] args) throws Exception{// 1、获取该类的字节码对象Class cls = CJavaDemo.class;// 2、获取上边的注解对象Pro an = (Pro) cls.getAnnotation(Pro.class);// 3、调用注解对象中定义的抽象方法,获取返回值String className = an.className();String methodName = an.methodName();System.out.println(className);System.out.println(methodName);// 4、加载该类进内存Class mJavaTest = Class.forName(className);// 创建对象Object obj = mJavaTest.newInstance();// 获取方法对象Method method = mJavaTest.getMethod(methodName);// 执行方法method.invoke(obj);}
}

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

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

相关文章

SQL Server入门-SSMS简单使用(2008R2版)-1

环境&#xff1a; win10&#xff0c;SQL Server 2008 R2 参考&#xff1a; SQL Server 新建数据库 - 菜鸟教程 https://www.cainiaoya.com/sqlserver/sql-server-create-db.html 第 2 课&#xff1a;编写 Transact-SQL | Microsoft Learn https://learn.microsoft.com/zh-cn/…

LabVIEW电池管理系统测试平台

随着混合动力汽车技术的快速发展&#xff0c;对电池管理系统&#xff08;BMS&#xff09;的测试需求显著增加。利用LabVIEW软件开发了一款电池管理系统测试平台&#xff0c;通过模拟电池行为验证BMS的控制策略&#xff0c;从而降低成本、缩短开发周期&#xff0c;并提高整车的能…

PostgreSQL内核开发——添加内核函数

在PostgreSQL内核的学习过程中,可以尝试向内核中添加一些函数,扩展PostgreSQL的功能。同时可以增加自己对PG内核的理解。这里我们以简单的添加一个helloworld函数为例,分析一下这个过程中涉及到的相关源码。 PostgreSQL添加pg_helloworld函数 这里总结一下如何向PostgreSQ…

如何零基础学办公软件?沈阳电脑办公软件培训

你说的办公软件是指常用办公软件吧&#xff0c;一般就是office三件套&#xff1a;Word、Excel、PowerPoint&#xff0c;建议直接上手开始完成几个稍微复杂一点的任务&#xff1a; word&#xff0c;建议排版一份毕业论文&#xff0c;找一个大学生的毕业论文&#xff0c;或者随便…

基于MYSQL的JAVA初级优化措施

世界是草台班子,这句话视乎很流行! 经历过几家创业公司的项目优化,以及大公司项目. 很多优化非常初级,用心点都能自己找出来! 其实主要原因当初是为了赶进度,能省则省.什么设计啊? 什么性能压测啊. 都省掉吧! 质量都要靠测试人员帮忙找出来,更何况是性能问题呢! 那怕是配齐了…

线上扭蛋机小程序开发,潮玩时代的创新发展

随着互联网的发展&#xff0c;扭蛋机市场也进行了创新发展&#xff0c;线上扭蛋机小程序为市场带来了新活力。扭蛋机小程序将传统的模式与互联网结合&#xff0c;打造一个便捷有趣的扭蛋机市场。 一、扭蛋机小程序 在扭蛋机小程序上&#xff0c;用户通过扭蛋机抽取各种系列的…

如何查看Linux系统中占用CPU资源高的进程

在Linux系统中&#xff0c;管理进程并监控其资源使用情况是一项重要的任务。当系统性能下降或响应变慢时&#xff0c;通常是由于某个或多个进程占用了过多的CPU资源。为了找出这些进程并采取相应的措施&#xff0c;我们可以使用多种命令行工具。以下是几种常用的方法&#xff0…

Ubuntu乌班图安装VIM文本编辑器工具

系列文章目录 Ubuntu-24.04-live-server-amd64安装界面中文版 Ubuntu-24.04-live-server-amd64启用ssh Ubuntu安装qemu-guest-agent 文章目录 系列文章目录前言一、安装VIM&#xff1f;二、VIM基本设置总结 前言 从centos转到Ubuntu发现默认安装没有vi 一、安装VIM&#xff1…

SpringMVC系列十一: 文件上传与自定义拦截器

文章目录 SpringMVC文件上传基本介绍需求分析 / 图解应用实例-代码实现 自定义拦截器什么是拦截器自定义拦截器执行流程分析图自定义拦截器应用实例快速入门注意事项和细节Debug执行流程 多个拦截器多个拦截器执行流程示意图应用实例1代码实现注意事项和细节 应用实例2 作业布置…

Mongodb UPDATE, 使用$position指定向数组中插入新元素的位置

学习mongodb&#xff0c;体会mongodb的每一个使用细节&#xff0c;欢迎阅读威赞的文章。这是威赞发布的第72篇mongodb技术文章&#xff0c;欢迎浏览本专栏威赞发布的其他文章。如果您认为我的文章对您有帮助或者解决您的问题&#xff0c;欢迎在文章下面点个赞&#xff0c;或者关…

HTML 全局属性介绍及示例

HTML 全局属性是一组可以在任何HTML元素中使用的属性。这些属性提供了一种方式来定义元素的通用行为或外观。以下是一些常见的HTML全局属性及其示例。 id id 属性为元素提供了一个唯一的标识符。它不能在 <head>, <html>, <meta>, <script>, <sty…

vue2+echart 树状图节点密集,可滚动鼠标缩放, 尺寸根据节点调整

vue2echart 树状图节点密集&#xff0c;可滚动鼠标缩放&#xff0c; 尺寸根据节点调整 <template><div ref"chart" style"width: 100%; height: 600px;"></div> </template><script> import * as echarts from echarts;exp…

9.2.2 DeepLab系列模型中每一代的创新是什么?是为了解决什么问题?

9.2.2 DeepLab系列模型中每一代的创新是什么&#xff1f;是为了解决什么问题&#xff1f; 前情回顾&#xff1a;9.2.1 简述图像分割中经常用到的编码器-解码器网络结构的设计理念。 DeepLab是Google 团队提出的一系列图像分割算法。 DeepLab v1在2014年被提出&#xff0c;并在…

微信小程序接入lottie动画

1、注意&#xff1a;canvas渲染出来的层级太高&#xff0c;当有弹窗的情况会暴露在弹窗外 模拟器上会有这个问题&#xff0c;线上版本不会有 2、需求 需要把lottie动画在小程序的环境下进行展示 3、什么是lottie动画 由Airbnb开发并开源。允许设计师将复杂的矢量动画导出为…

李宏毅深度学习项目——HW1个人笔记

视频链接 PDF链接 googleColab链接 GoogleColab是一个免费的jupyter notebook&#xff0c;可以用上面的gpu资源进行训练 题目 通过前两天的数据&#xff0c;预测第三天某个人感染新冠的概率 范例 导包 # Numerical Operations import math import numpy as np# Reading/Wr…

欢迎莅临ARCHE-2024,共享智慧档案盛宴!

敬邀参观&#xff01;2024第三届上海国际智慧档案展览会&#xff08;ARCHE-2024&#xff09;将于2024年6月19-21日在上海跨国采购会展中心盛大开幕。深圳市铨顺宏科技有限公司将展示最新的智慧档案技术与解决方案&#xff0c;展位号H010-H011。期待您的光临&#xff0c;共同探索…

String类的默认实现

#pragma once #include <iostream> using namespace std; #include <assert.h>namespace yyqx//为了与库里面的string进行区分 {//仅仅实现一个简单的string&#xff0c;仅仅考虑资源管理深浅拷贝问题class string{public://构造函数string(const char* str):_size…

对比 Axios 和 Fetch:选择最适合的 HTTP 请求方法

在前端开发中&#xff0c;处理 HTTP 请求是一个常见且重要的任务。JavaScript 提供了多种方式来发送网络请求&#xff0c;其中最受欢迎的两种方式分别就是 Fetch API 和 Axios。尽管两者都能完成同样的任务&#xff0c;即从客户端向服务器发送请求并接收响应&#xff0c;但它们…

无线麦克风推荐哪些品牌?一文读懂家用无线麦克风哪个牌子好!

​在这个充满创意与表达的时代&#xff0c;无线领夹麦克风以其独特的魅力&#xff0c;成为了声音创作者们的得力助手。它小巧便携&#xff0c;功能强大&#xff0c;无论是日常拍摄、直播互动还是专业演出&#xff0c;都能轻松应对&#xff0c;让你的声音随时随地清晰传递。那么…

编程精粹—— Microsoft 编写优质无错 C 程序秘诀 04:对程序进行逐步跟踪

这是一本老书&#xff0c;作者 Steve Maguire 在微软工作期间写了这本书&#xff0c;英文版于 1993 年发布。2013 年推出了 20 周年纪念第二版。我们看到的标题是中译版名字&#xff0c;英文版的名字是《Writing Clean Code ─── Microsoft’s Techniques for Developing》&a…