• Java使用反射获取注解信息的简介说明


    转自:

    Java使用反射获取注解信息的简介说明

    下文笔者讲述使用java反射获取注解信息的方法分享,如下所示:

    注解简介说明

    注解可以理解为java代码的一个注释,注解本身不起任何作用,它需要借助反射为类做一些扩展功能
    例:注解的使用

    //TestClass上使用了注解@MyAnnotation
    @MyAnnotation(name="java",value="java265.com")
    public class TestClass {
    }
    
    //定义注解
    @Retention(RetentionPolicy.RUNTIME)
    @Target(ElementType.TYPE)
    public @interface MyAnnotation {
      public String name();
      public String value();
    }
    

    java访问注解的示例分享

    Class aClass = TestClass.class;
    Annotation[] annotations = aClass.getAnnotations();
    for(Annotation annotation : annotations){
        if(annotation instanceof MyAnnotation){
            MyAnnotation myAnnotation = (MyAnnotation) annotation;
            System.out.println("name: " + myAnnotation.name());
            System.out.println("value: " + myAnnotation.value());
        }
    } 
    

    方法注解

    public class TestClass {
      @MyAnnotation(name="methoName",  value = "this is method")
      public void testFun(){}
    }
     
    Method method = ... //获取方法对象
    Annotation[] annotations = method.getDeclaredAnnotations();
    for(Annotation annotation : annotations){
        if(annotation instanceof MyAnnotation){
            MyAnnotation myAnnotation = (MyAnnotation) annotation;
            System.out.println("name: " + myAnnotation.name());
            System.out.println("value: " + myAnnotation.value());
        }
    }
    

    参数注解

     public class TestClass {
      public static void testFun(
            @MyAnnotation(name="aName", value="aValue") String parameter){
      }
    }
    
    //使用Method对象来访问方法参数注解
    
    Method method = ... //获取方法对象
    Annotation[][] parameterAnnotations = method.getParameterAnnotations();
    Class[] parameterTypes = method.getParameterTypes();
    int i=0;
    for(Annotation[] annotations : parameterAnnotations){
      Class parameterType = parameterTypes[i++];
      for(Annotation annotation : annotations){
        if(annotation instanceof MyAnnotation){
            MyAnnotation myAnnotation = (MyAnnotation) annotation;
            System.out.println("param: " + parameterType.getName());
            System.out.println("name : " + myAnnotation.name());
            System.out.println("value: " + myAnnotation.value());
        }
      }
    }
    ---------------------
    注意事项:
        Method.getParameterAnnotations()方法返回一个注解类型的二维数组
    

    变量注解

    public class TestClass {
      @MyAnnotation(name="someName",  value = "Hello World")
      public String myField = null;
    }
    
    Field field = ... //获取方法对象
    Annotation[] annotations = field.getDeclaredAnnotations();
    for(Annotation annotation : annotations){
     if(annotation instanceof MyAnnotation){
     MyAnnotation myAnnotation = (MyAnnotation) annotation;
     System.out.println("name: " + myAnnotation.name());
     System.out.println("value: " + myAnnotation.value());
     }
    }
  • 相关阅读:
    音视频学习笔记——实现PCM和H264合成MP4功能
    从nuxt开始的SEO之路
    3.1python基础01
    Vue3+TS+Vite+NaiveUI搭建一个项目骨架
    【C++】红黑树的插入实现
    2023年9月13日
    Label Smoothing介绍及其代码实现
    Xshell + lrzsz 实现Linux与Windos文件互传
    ts快速上手笔记01
    beanshell入门:脚本中引用自定义的变量和方法和定义运行时变量
  • 原文地址:https://blog.csdn.net/qq_25073223/article/details/126673072