6

我怎样才能从注释处理器中获取package name,generic type和?Parametrized typetypefield element

说,如果Element.asType返回java.util.List<String>,我想得到

  • 包裹名字java.util
  • 泛型类型List<E>或原始类型List(最好是原始类型)
  • 实际类型String

有什么方法element utilstype utils

4

1 回答 1

15

获取包裹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.asElementElements.getPackageOf和。Types.erasureDeclaredType.getTypeArguments

于 2017-06-22T03:36:30.517 回答