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