Get TypeElement from Generic TypeParameterElement for Java Annotation Processor?

Using Java Annotation Handlers I have the following type:

@NameToken(value={"startPage"})
public interface MyProxy extends Proxy<StartPagePresenter> {
}

and:

public interface Proxy<T> { }

I have TypeElementof Proxylike:

TypeElement pProxyTypeElement = // ...

Now I want to get the TypeElement of the type parameter <StartPagePresenter>.

I tried:

List<? extends TypeParameterElement> proxyTypeParamElems = 
                                         proxyTypeElement.getTypeParameters();
TypeParameterElement firstParameter = proxyTypeParamElems.get(0);

When I type firstParameter.getSimpleName(), I get Tinstead StartPagePresenter.

How to get real TypeElementStartPagePresenter from TypeParameter?

+4
source share
1 answer

, TypeMirror DeclaredType. DeclaredType getTypeArguments(), TypeMirror, :

:

    Set<? extends Element> proxyElements = roundEnvironment.getElementsAnnotatedWith(NameToken.class);

    for(Element element : proxyElements){
        TypeElement typeElement = (TypeElement)element;
        DeclaredType declaredType = (DeclaredType)typeElement.getInterfaces().get(0); //assuming there is an interface

        for(TypeMirror genericParameter : declaredType.getTypeArguments()){
            messager.printMessage(Diagnostic.Kind.NOTE, genericParameter.toString());
        }
    }

StartPagePresenter

, API, .

+7

All Articles