我正在尝试解析一些Java源文件并使用AST获取一些信息。目前,我想以某种方式获取参数化类型的类型,例如从List<String>我需要String

public boolean visit(VariableDeclarationFragment f) {
if (f.getParent() instanceof FieldDeclaration) {
    FieldDeclaration d = (FieldDeclaration) f.getParent();
    if (d.getType().isParameterizedType()) {
        System.out.println("Par type : " + d.getType().toString());
    }
}
}


此代码段为我提供了List<String>
关于如何进行的任何想法?

最佳答案

您需要将Type强制转换为ParametrizedType并提取内部类型。

public boolean visit(VariableDeclarationFragment f) {
  if (f.getParent() instanceof FieldDeclaration) {
    FieldDeclaration d = (FieldDeclaration) f.getParent();
    if (d.getType().isParameterizedType()) {
      ParameterizedType parType = (ParameterizedType) d.getType();
      System.out.println("Par type : " + parType.typeArguments().get(0).toString());
    }
  }
}

10-07 13:14