如何从注释处理器中package name
的{{1}}获取generic type
,Parametrized type
和type
?
说,如果field element
返回 Element.asType
,我想要
java.util.List<String>
java.util
或原始类型List<E>
(最好是原始类型)List
String
,element utils
中是否有任何方法?
答案 0 :(得分:9)
获取包java.util
:
Element e = processingEnv.getTypeUtils().asElement(type);
PackageElement pkg = processingEnv.getElementUtils().getPackageOf(e);
获取原始类型List
:
TypeMirror raw = processingEnv.getTypeUtils().erasure(type);
获取类型参数,例如String
:
if (type.getKind() == TypeKind.DECLARED) {
List<? extends TypeMirror> args =
((DeclaredType) type).getTypeArguments();
args.forEach(t -> {/*...*/});
}
请参阅:Types.asElement
,Elements.getPackageOf
,Types.erasure
和DeclaredType.getTypeArguments
。