作者:猪的快乐旅途_278 | 来源:互联网 | 2023-01-31 16:14
我怎样才能获得package name
,generic type
并且Parametrized type
从type
从field element
在注释处理器?
说,如果Element.asType
回来java.util.List
,我想得到
包裹名字 java.util
通用类型List
或原始类型List
(最好是原始类型)
实际类型 String
有没有方法element utils
,type utils
?
1> Radiodef..:
获得包裹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
.