首页 > 其他分享 >反射方式读取注解信息

反射方式读取注解信息

时间:2023-07-18 22:33:38浏览次数:28  
标签:反射 读取 System clazz println 注解 annotation out

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

}

  

标签:反射,读取,System,clazz,println,注解,annotation,out
From: https://www.cnblogs.com/qukaige/p/17564309.html

相关文章

  • NPY文件读取方法
    用Python做机器学习的时候会有一种格式为*.npy的文件,对于这类文件我们无法直接将其打开看到里面的实际内容,需要使用Numpy给它解析出来查看具体内容,下面提供两种方式以读取*.npy文件:单个文件的读取:importargparseimportnumpyasnp#创建命令行参数解析器parser=argpar......
  • 1.6-反射
    看这个网站Q:调用类对象.class和forName(类名)的区别?Class<A>classA=A.class;Class<A>classA=Class.forName("A");A:仅使用.class不能进行第一次静态初始化,forname函数则可以例如B是A的基类,下面这段代码如何?假设有父子2个类,如下:staticclassParent{}staticclass......
  • Go语言读取网上Json格式的天气预报数据例子
    天气预报接口使用的是:http://www.weather.com.cn/data/sk/101010100.html这里的Json数据如下:{"weatherinfo":{"city":"北京","cityid":"101010100","temp":"1......
  • Java读取txt文件内容并求交集并集差集对称差集合去重
    Java读取两个txt内容并作集合运算文件内容及格式完整代码packagecom.example.fortotest;importjava.io.BufferedReader;importjava.io.File;importjava.io.InputStreamReader;importjava.nio.file.Files;importjava.util.HashSet;importjava.util.Objects;pu......
  • csv 压测读取常用策略
    如果想csv里的数据只使用一次     ================================== 遇到空行不结束 循环往复执行 -------------------------------------------------------------currentthread慎用,因为是随机的[bot]非常抱歉,我之前的回答中的"RandomOrder"......
  • CLV620 高速读取条码调试实例
    ​ ​ 第一部分:现场问题描述 客户反馈SICKCLV620在低速下读取没有问题,在高速下大概3m/s以上就无法正常读取。客户要求实际速度在6m/s的应用场合。 现场观察现象确实如此,但原因却不是。 难点: 1,客户反馈的问题误导了排查思路; 2,现场条码质量较差无法满足实......
  • glTexImage2D: 读取位置XXX时发生访问冲突。
    在跟着LearnOpenGL教程学习纹理部分时,你或许会加载一张自己喜欢的图片作为纹理,但加载某些图片时会报以下错误:读取位置XXX时发生访问冲突。这个错误通常出现在以下部分:unsignedchar*data=stbi_load("demo.jpg",&image_width,&image_height,&image_channel,0);if(da......
  • @NacosConfigListener注解监听配置变化失效解决
    项目初始配置:maven依赖如下:<!--配置与发现依赖--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency&g......
  • python用xlrd读取表格数据
    使用xlrd读取表格数据的步骤为了帮助你实现Python中使用xlrd库来读取表格数据,我将按照以下步骤来进行详细说明。步骤概览安装xlrd库导入所需的库打开Excel文件选择要操作的工作表读取数据关闭Excel文件接下来,我将逐步展开每个步骤,并提供相应的代码示例。请注意,代码示例......
  • SpringBoot启动类变灰色,无法启动,注解通通不生效
    1:自己准备创建SpringBoot项目时,严格按照要求创建后,变成了这样。启动类运行不了,@SpringBootApplication注解也是黑色。而正常的是蓝色,注解是黄色。2:通过查询博主java文件夹标记为sourcesroot目录,右上角选择蓝色框框,然后选择Modules,最后把java、resources、test分别配置好。 ......