如何使用jdt提取参数化类型的单一类型

How to extract the single type of a parameterized type using jdt

我正在尝试解析一些 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());
    }
  }
}