反射方式读取注解信息
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | package com.example.simpleframework.annotation; import java.lang.annotation.Annotation; import java.lang.reflect.Field; import java.lang.reflect.Method; public class AnnotationParse { public static void main(String[] args) throws ClassNotFoundException { parseTypeAnnotation(); parseFiledAnnotation(); parseMethod(); } //解析类的注解 public static void parseTypeAnnotation() throws ClassNotFoundException { Class clazz = Class.forName( "com.example.simpleframework.annotation.Course" ); //这里只是获取对象的注解,而不是方法和成员变量的注解 Annotation[] annotations = clazz.getAnnotations(); for (Annotation annotation : annotations) { CourseInfoAnnotation courseInfoAnnotation = (CourseInfoAnnotation) annotation; System.out.println( "名字: " + courseInfoAnnotation.courseName()); System.out.println( "标签: " + courseInfoAnnotation.courseTag()); System.out.println( "描述: " + courseInfoAnnotation.courseProfile()); System.out.println( "序号: " + courseInfoAnnotation.courseIndex()); } } //解析成员注解 public static void parseFiledAnnotation() throws ClassNotFoundException { Class clazz = Class.forName( "com.example.simpleframework.annotation.Course" ); Field[] fields = clazz.getDeclaredFields(); for (Field field : fields) { //判断是指定注解 boolean b = field.isAnnotationPresent(PersonInfoAnnotation. class ); if (b) { PersonInfoAnnotation personInfoAnnotation = field.getAnnotation(PersonInfoAnnotation. class ); System.out.println( "name=" + personInfoAnnotation.name()); for (String s : personInfoAnnotation.language()) { System.out.println(s); } } } } //解析方法注解 public static void parseMethod() throws ClassNotFoundException { Class clazz = Class.forName( "com.example.simpleframework.annotation.Course" ); Method[] methods = clazz.getDeclaredMethods(); for (Method method : methods) { boolean b = method.isAnnotationPresent(CourseInfoAnnotation. class ); if (b) { CourseInfoAnnotation annotation = method.getAnnotation(CourseInfoAnnotation. class ); System.out.println(annotation.courseName()); } } } } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!