我无法使用自己的注释

时间:2013-12-12 13:53:59

标签: java reflection

使用我自己的注释时出错,任何人都可以帮助解决这个问题 这是我的以下注释:

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;


@Target(value=ElementType.TYPE)
@Retention(value = RetentionPolicy.RUNTIME)


public @interface CanRun {

}

这是我的班级之一,代替注释显示错误,任何人都可以解释&解决...

import java.lang.reflect.Method;

public class AnnotationRunner {

    public void method1() {
        System.out.println("method1");
    }

    @CanRun
    public void method2() {
        System.out.println("method2");
    }

    @CanRun
    public void method3() {
        System.out.println("method3");
    }

    public void method4() {
        System.out.println("method4");
    }

    public void method5() {
        System.out.println("method5");
    }

} 

这是使用此注释的主要类

public class MyTest {

    public static void main(String[] args) {

        AnnotationRunner runner = new AnnotationRunner();
        Method[] methods = runner.getClass().getMethods();

        for (Method method : methods) {
            CanRun annos = method.getAnnotation(CanRun.class);
            if (annos != null) {
                try {
                    method.invoke(runner);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }
} 

2 个答案:

答案 0 :(得分:7)

变化

@Target(value=ElementType.TYPE)

@Target(value=ElementType.METHOD)

答案 1 :(得分:2)

你需要

  

@Target(值= ElementType.METHOD)

如果你想注释方法