Java seek a method with specific annotation and its annotation element

前端 未结 2 1651
臣服心动
臣服心动 2020-11-30 02:07

Suppose I have this annotation class


@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface MethodXY {
    public int x();
    pu         


        
2条回答
  •  隐瞒了意图╮
    2020-11-30 03:02

    try this code sample:

    import java.lang.annotation.Annotation;
    import java.lang.reflect.Method;
    import java.lang.annotation.Retention;
    import java.lang.annotation.RetentionPolicy;
    import java.lang.annotation.Target;
    import java.lang.annotation.ElementType;
    import java.lang.reflect.InvocationTargetException;
    
    class AnotTest {
        public static void main(String... args) {
            AnnotationTest at = new AnnotationTest();
            for (Method m : at.getClass().getMethods()) {
               MethodXY mXY = (MethodXY)m.getAnnotation(MethodXY.class);
               if (mXY != null) {
                   if (mXY.x() == 3 && mXY.y() == 2){
                       try {
                           m.invoke(at);
                       } catch (IllegalAccessException e) {
                           //do nothing;
                       } catch (InvocationTargetException o) {
                           //do nothing;
                       }
                   }
               }
            }
        }
        @Retention(RetentionPolicy.RUNTIME)
        @Target(ElementType.METHOD)
        static public @interface MethodXY {
            public int x();
            public int y();
        }
    
        static class AnnotationTest {
            @MethodXY(x=5, y=5)
            public void myMethodA() {
                System.out.println("boo");
            }
    
            @MethodXY(x=3, y=2)
            public void myMethodB() {
                System.out.println("foo");
            }
        }
    }
    

提交回复
热议问题