作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
在java.lang.reflect
, 一个会做:
Field someField = ...;
Class<?> fieldType = someField.getType();
但是我该如何处理 javax.lang.model
的 VariableElement
(这可能代表也可能不代表一个领域)?相应的返回值将是(我猜)TypeElement
.
VariableElement someField = ...;
TypeElement fieldType = someField.???;
所以,在 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;
}
}
Types
类似乎必须从当前的 ProcessingEnvironment
中获取,因为它的某些内部结构依赖于它,所以它不是一个普通的实用程序类。
关于javax.lang.模型 : How do I get the type of a field?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4482829/
我是一名优秀的程序员,十分优秀!