2016-11-10 37 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()); 
    } 
    } 
}