2011-10-14 8 views
11

Sto cercando di trovare i tipi dei parametri di un metodo utilizzando l'API metamodel Java 6. Se il tipo è un enum, mi piacerebbe anche conoscere tutti i nomi di costanti enum di tipo. Ecco quello che ho finora:Come ottenere il tipo di parametro da javax.lang.model.VariableElement

for (Element member : members) { 
    if(member.getKind() == ElementKind.METHOD) { 
     ExecutableElement methodElement = (ExecutableElement) member; 
     List<? extends VariableElement> parameters = methodElement.getParameters(); 
     for (VariableElement parameter : parameters) { 
      //How do I get the type of the parameter here? 
     } 
    } 
} 

risposta

10

Element#asType() si ottiene il DeclaredType.

Per le enumerazioni, utilizzare Types#asElement() con DeclaredType per ottenere l'elemento del tipo enum, quindi eseguire iterazione sui membri utilizzando un ElementVisitor o utilizzando getEnclosedElements().

+0

Grazie! Provalo adesso. – Daniel

+14

Ha funzionato, anche se non posso fare a meno di pensare che questa sia una delle API meno intuitive con cui ho lavorato. – Daniel