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