我怎样才能得到 package name
, generic type
和 Parametrized type
来自type
来自field element
在注释处理器中?
比如说,如果Element.asType
返回 java.util.List<String>
,我想得到
- 包名称
java.util
- 通用类型
List<E>
或原始类型List
(最好是原始类型) - 实际类型
String
element utils
里面有没有方法, type utils
?
最佳答案
获取包java.util
:
Element e = processingEnv.getTypeUtils().asElement(type);
PackageElement pkg = processingEnv.getElementUtils().getPackageOf(e);
获取原始类型 List
:
TypeMirror raw = processingEnv.getTypeUtils().erasure(type);
获取类型参数,例如字符串
:
if (type.getKind() == TypeKind.DECLARED) {
List<? extends TypeMirror> args =
((DeclaredType) type).getTypeArguments();
args.forEach(t -> {/*...*/});
}
参见:Types.asElement
, Elements.getPackageOf
, Types.erasure
和 DeclaredType.getTypeArguments
.
关于java - 从字段元素获取包名称和参数化类型 - 注释处理器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44685279/