2015-03-27 3 views
2

я определил следующий класс:не может вывести тип-переменный (ы) при реализации обобщенного класса

public class AttributeVisitor extends SimpleAnnotationValueVisitor8<Object, Object> { 

    public AttributeVisitor() { 
     super(); 
    } 

    public AttributeVisitor(Object defaultValue) { 
     super(defaultValue); 
    } 

    @Override 
    public Object visitEnumConstant(VariableElement c, Object attribute) { 
     return super.visitEnumConstant(c, attribute); 
    } 
} 

Я пытаюсь использовать его в следующем отрезал

for(Map.Entry<? extends ExecutableElement, ? extends AnnotationValue> mirrorValues: annotationMirror.getElementValues().entrySet()){ 
    mirrorValues.getValue().accept(new AttributeVisitor()); 
} 

На компиляция, я получаю следующую ошибку:

method accept in interface javax.lang.model.element.AnnotationValue cannot be applied to given types; 
[ERROR] required: javax.lang.model.element.AnnotationValueVisitor<R,P>,P 
[ERROR] found: com.cvent.analytics.validator.AttributeVisitor 
[ERROR] reason: cannot infer type-variable(s) R,P 
[ERROR] (actual and formal argument lists differ in length) 

Любая идея, что здесь не верно?

+0

Какой тип 'annotationMirror.getElementValues ​​()'? –

+0

Его Карта Ссылка: https: //docs.oracle.com/javase/8/docs/api/javax/lang/model/element/AnnotationMirror.html#getElementValues-- –

ответ

Смежные вопросы