jav*_*top 13 java reflection types mirror annotation-processing
在java.lang.reflect,人们会这样做:
Field someField = ...;
Class<?> fieldType = someField.getType();
Run Code Online (Sandbox Code Playgroud)
但是,我该怎么做用javax.lang.model的VariableElement(这可能会或可能不会代表一个字段)?相应的返回值将是(我猜)TypeElement.
VariableElement someField = ...;
TypeElement fieldType = someField.???;
Run Code Online (Sandbox Code Playgroud)
那么,在javax.lang.model,如何获得TypeElement字段的类型(或),由VariableElement?表示?
顺便说一下,没有一个适合javax.lang.model的Stackoverflow标签;)
嗯,我不知道,这是正确的方法.
如果真正理解这个API的人告诉我,那会很好.
但是,接缝工作.
public class SomeClass {
private final ProcessingEnvironment pe = /* get it somewhere */;
private final Types typeUtils = pe.getTypeUtils();
public TypeElement getExtracted(VariableElement ve) {
TypeMirror typeMirror = ve.asType();
Element element = typeUtils.asElement(typeMirror);
// instanceof implies null-ckeck
return (element instanceof TypeElement)
? (TypeElement)element : null;
}
}
Run Code Online (Sandbox Code Playgroud)
似乎该类Types必须从当前获得,ProcessingEnvironment因为它的一些内部依赖于它,因此它不是通常的实用类.