为什么下一行在 Java 中产生编译错误?或者如何编写正确的泛型语法?
Class<? extends Annotation> annotation = annotations[i];
Class<? extends Annotation> anno = javaClass.getAnnotation(annotation);
方法的签名是:
public <A extends Annotation> A getAnnotation(Class<A> annotationClass)
Eclipse 编译错误:
Type mismatch: cannot convert from capture#5-of ? extends Annotation to Class<? extends Annotation>
javac编译错误:
incompatible types
Class<? extends Annotation> anno = javaClass.getAnnotation(annotation);
^
required: Class<? extends Annotation>
found: CAP#1
where CAP#1 is a fresh type-variable:
CAP#1 extends Annotation from capture of ? extends Annotation
最佳答案
getAnnotation
返回注释本身 - 而不是注释的类。我怀疑你可以使用:
Class<? extends Annotation> annotationClass = annotations[i];
Annotation annotation = javaClass.getAnnotation(annotationClass);
关于java - 为什么 getAnnotation 不接受 Class<?扩展注解>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10663955/