java 类,变量,方法上注解值的获取

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_36838191/article/details/79955419

首先定义三个注解类, 分别适用于类,成员变量, 方法

[java] view plain copy
  1. @Target(ElementType.TYPE)  
  2. @Retention(RetentionPolicy.RUNTIME)  
  3. public @interface LeiMode {  
  4.     public int value() default 1;  
  5. }  

[java] view plain copy
  1. @Target(ElementType.FIELD)  
  2. @Retention(RetentionPolicy.RUNTIME)  
  3. public @interface FiledMode {  
  4.     public int value() default 1;  
  5. }  

[java] view plain copy
  1. @Target(ElementType.METHOD)  
  2. @Retention(RetentionPolicy.RUNTIME)  
  3. public @interface TreahMode {  
  4.     public int value() default 1;  
  5. }  

然后,定义一个类,使用了注解

[java] view plain copy
  1. @LeiMode(5)  
  2. public class AnnotationDemo {  
  3.       
  4.     @FiledMode(10)  
  5.     private int itest;  
  6.       
  7.     @TreahMode()  
  8.     private void test(){}  
  9. }  


1.获取类上的注解值

[java] view plain copy
  1. LeiMode annotation = AnnotationDemo.class.getAnnotation(LeiMode.class);  
  2. System.out.println(annotation.value());  


2.获取所有变量,并获取指定方法上的注解信息

[html] view plain copy
  1. Field[] fields = AnnotationDemo.class.getDeclaredFields();  
  2.         Field field = null;  
  3.         for(Field f : fields){  
  4.             if(f.getName().equals("itest")){  
  5.                 field = f;  
  6.                 break;  
  7.             }  
  8.         }  
  9.           
  10.         FiledMode annotation = field.getAnnotation(FiledMode.class);  
  11.         System.out.println(annotation.value());  


3.获取指定变量上的注解信息 

[java] view plain copy
  1. Field field = AnnotationDemo.class.getDeclaredField("itest");  
  2.         FiledMode annotation = field.getAnnotation(FiledMode.class);  
  3.           
  4.         System.out.println(annotation.value());  

4.获取所有方法,并获取指定方法上的注解信息

[java] view plain copy
  1. Method[] methods = AnnotationDemo.class.getDeclaredMethods(); //可以获取私有方法和公有方法, getMethods() 获取公有方法  
  2.         Method meth = null;  
  3.         for(Method method : methods){  
  4.             if(method.getName().equals("test")){  
  5.                 meth = method;  
  6.                 break;  
  7.             }  
  8.         }  
  9.         Annotation annotation = meth.getAnnotations()[0];  
  10.         TreahMode mode = (TreahMode) annotation;  
  11.         System.out.println(mode.value());  

5.获取指定方法上的注解信息

[java] view plain copy
  1. Method method = AnnotationDemo.class.getDeclaredMethod("test"null);//可以获取私有方法和公有方法  
  2.         System.out.println(method);  
  3.         Annotation[] annotations = method.getAnnotations();  
  4.         Annotation annotation = annotations[0];  
  5.         System.out.println(annotation);  
  6.           
  7.         TreahMode mode = (TreahMode) annotation;  
  8.         System.out.println(mode.value());  
阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页