使用我自己的注释时出错,任何人都可以帮助解决这个问题 这是我的以下注释:
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();
}
}
}
}
}
答案 0 :(得分:7)
变化
@Target(value=ElementType.TYPE)
到
@Target(value=ElementType.METHOD)
答案 1 :(得分:2)
你需要
@Target(值= ElementType.METHOD)
如果你想注释方法