我有一个带有接口方法的接口
<A extends Annotation> A getAnnotation(Class<A> annotationType)
该类的实现通过包装实现该方法
javax.lang.model.element.Element.getAnnotation(...)
具有完全相同的界面。
当我现在尝试调用自己的实现时,出现错误incompatible types: java.lang.annotation.Annotation cannot be converted to myannotation
请记住,getElement()
函数是为了测试而添加的,不应保留
界面:
public interface ElementWrapper<E extends Element> {
<A extends Annotation> A getAnnotation(Class<A> annotationType);
E getElement();
}
实现:
public class TypeWrapper implements ElementWrapper<TypeElement> {
private static final TypeElement element;
@Override
public final <A extends Annotation> A getAnnotation(Class<A> annotationType) {
return element.getAnnotation(annotationType);
}
@Override
public final TypeElement getElement() {
return element;
}
}
问题的用法:
public class TheClassIUseTypeWrapperIn {
public someMethod(TypeWrapper wrapper) {
MyAnnotation = wrapper.getElement().getAnnotation(MyAnnotation.class); // this works fine
MyAnnotation = wrapper.getAnnotation(MyAnnotation.class); // this does not work
}
}
我希望我的包装器能正常工作