Java:通过反射解析自定义注解的并顺序执行被注解标注的方法
2021/5/10 1:26:33
本文主要是介绍Java:通过反射解析自定义注解的并顺序执行被注解标注的方法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
- 创建自定义注解
import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; //这里的 @Target和 @Retention 注解为元注解(就是Java中提供的用来定义注解的注解) //定义注解标注的位置 TYPE:类 METHOD:方法 @Target({ElementType.METHOD,ElementType.TYPE}) //约束注解的生命周期 runtime:此注解会存在于源码,class文件,运行时内存 @Retention(RetentionPolicy.RUNTIME) public @interface Book { int index() default 0; }
- 创建一个类来使用自定义注解
public class MybookTest { @Book(index = 3) public void show1(){ System.out.println("正在执行show1()"); } @Book(index = 1) public void show2(){ System.out.println("正在执行show2()"); } @Book(index = 0) public void show3(){ System.out.println("正在执行show3()"); } @Book(index = 2) public void show4(){ System.out.println("正在执行show4()"); } }
- 通过反射解析自定义类并运行方法
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.Arrays; import java.util.Comparator; public class DemoAnontation { public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException { Class<?> aClass = Class.forName("com.itheima.annotation.MybookTest"); //反射调用空参构造来实例化对象 Object obj = aClass.getConstructor().newInstance(); //获取对象中所有的方法 Method[] methods = aClass.getMethods(); //根据获取到的所有 方法中使用 @Book注解的并根据注解属性的 index 值进行排序 Arrays.sort(methods, new Comparator<Method>() { public int compare(Method o1, Method o2) { if(o1.isAnnotationPresent(Book.class) && o2.isAnnotationPresent(Book.class)){ //2.取出每个方法的@Book 注解对象 Book t1 = o1.getAnnotation(Book.class); Book t2 = o2.getAnnotation(Book.class); //3.取出每个注解的 index 属性值 int index1 = t1.index(); int index2 = t2.index(); return index1 - index2; } return 0; } }); //获取每一个方法并反射执行方法 for (Method method : methods) { if (method.isAnnotationPresent(Book.class)){ //通过 obj 对象来执行 method 方法 method.invoke(obj); } } } }
- 执行结果如下
这篇关于Java:通过反射解析自定义注解的并顺序执行被注解标注的方法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-07-04TiDB 资源管控的对撞测试以及最佳实践架构
- 2024-07-03万字长文聊聊Web3的组成架构
- 2024-07-02springboot项目无法注册到nacos-icode9专业技术文章分享
- 2024-06-26结对编程到底难不难?答案在这里
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现