次の行で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