反射方式读取注解信息

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());
            }
        }
    }
 
}

  

posted @   qukaige  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示