2012-05-19 38 views
3

为什么跟随行会在Java中产生编译错误?或者我可以如何编写正确的泛型语法?为什么getAnnotation不接受Class <?扩展注释>

Class<? extends Annotation> annotation = annotations[i]; 
Class<? extends Annotation> anno = javaClass.getAnnotation(annotation); 

该方法的签名是:

public <A extends Annotation> A getAnnotation(Class<A> annotationClass) 

在Eclipse编译错误:

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 

回答

6

getAnnotation返回注解它:

Type mismatch: cannot convert from capture#5-of ? extends Annotation to Class<? extends Annotation> 

从javac的编译错误自我 - 不是注释的。我怀疑你可以使用:

Class<? extends Annotation> annotationClass = annotations[i]; 
Annotation annotation = javaClass.getAnnotation(annotationClass); 
相关问题