2016-11-10 19 views
0

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

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>。 关于如何进行的任何想法?

+0

没有运行。我只是解析源代码文件。因为我得到'List '或'ArrayList '没有办法摆脱'List/ArrayList'部分并且得到'String/double'? –

回答

1

您需要将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()); 
    } 
    } 
}