gpt4 book ai didi

java - ASTParser方法声明类型参数

转载 作者:行者123 更新时间:2023-12-02 07:44:46 24 4
gpt4 key购买 nike

如何使用 ASTParser 获取方法声明的类型参数。同样如何获取方法调用的 typeArguments。

例如:

public void abc(String a[], String b[])
{ .. }

我想提取“[String[], String[]]”。

谢谢。

最佳答案

你可以这样做:

import java.util.ArrayList;
import java.util.List;

import org.eclipse.jdt.core.dom.AST;
import org.eclipse.jdt.core.dom.ASTParser;
import org.eclipse.jdt.core.dom.ASTVisitor;
import org.eclipse.jdt.core.dom.CompilationUnit;
import org.eclipse.jdt.core.dom.MethodDeclaration;
import org.eclipse.jdt.core.dom.SingleVariableDeclaration;
import org.eclipse.jdt.core.dom.VariableDeclaration;

public class Test {
public static void main(final String args[]) {
ASTParser parser = ASTParser.newParser(AST.JLS3);
parser.setSource("public class A { int i = 9; \n int j; \n ArrayList<Integer> al = new ArrayList<Integer>();j=1000; public void test(String arg1[], String arg2[]) {}}"
.toCharArray());

parser.setKind(ASTParser.K_COMPILATION_UNIT);

final CompilationUnit cu = (CompilationUnit) parser.createAST(null);

cu.accept(new ASTVisitor() {

@Override
public boolean visit(final MethodDeclaration node) {
System.out.println("declaring method '" + node.getName() + "' that returns " + node.getReturnType2());
List<String> parameters = new ArrayList<String>();
for (Object parameter : node.parameters()) {
VariableDeclaration variableDeclaration = (VariableDeclaration) parameter;
String type = variableDeclaration.getStructuralProperty(SingleVariableDeclaration.TYPE_PROPERTY)
.toString();
for (int i = 0; i < variableDeclaration.getExtraDimensions(); i++) {
type += "[]";
}
parameters.add(type);
}

System.out.println(parameters);

return true;
}

});
}
}

关于java - ASTParser方法声明类型参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11062485/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com