首先要导入依赖
com.github.javaparser javaparser-symbol-solver-core3.24.0
1.获取Test.java中的方法名
public class TestJavaParser {
private static final String FILE_PATH="D:\study_java\qDox\src\main\java\test\TestClass.java";
@Test
public void test1() throws Exception {
CompilationUnit cu = StaticJavaParser.parse(new File(FILE_PATH));
//获取方法名
MethodNamePrinter methodNamePrinter = new MethodNamePrinter();
List nodeList = new ArrayList<>();
methodNamePrinter.visit(cu,null);
}
private static class MethodNamePrinter extends VoidVisitorAdapter{
@Override
public void visit(MethodDeclaration methodDeclaration,Void arg){
super.visit(methodDeclaration,arg);
System.out.println("MethodName:"+methodDeclaration.getName());
}
}
}
2.获取方法的起始,结束行号
改一下上面visit方法中的代码就行了
private static class MethodNamePrinter extends VoidVisitorAdapter{ @Override public void visit(MethodDeclaration methodDeclaration,Void arg){ Optional begin = methodDeclaration.getBegin(); Position beginPosition = begin.get(); int beginLine = beginPosition.line; Optional end = methodDeclaration.getEnd(); Position endPosition = end.get(); int endLine = endPosition.line; super.visit(methodDeclaration,arg); SimpleName simpleName = methodDeclaration.getName(); String methodName = simpleName.getIdentifier(); TestNode node = new TestNode(methodName,beginLine, endLine); System.out.println(node); System.out.println("MethodName:"+methodDeclaration.getName()+":begin:"+beginLine+":end:"+endLine); } }
3.用集合存储方法名
public class TestJavaParser {
private static final String FILE_PATH="D:\study_java\qDox\src\main\java\test\TestClass.java";
@Test
public void test2() throws Exception {
CompilationUnit cu = StaticJavaParser.parse(new File(FILE_PATH));
//用集合存放方法名
List methodNames = new ArrayList<>();
MethodNameCollector methodNameCollector = new MethodNameCollector();
methodNameCollector.visit(cu,methodNames);
methodNames.forEach(n-> System.out.println("MethodName:"+n));
}
private static class MethodNameCollector extends VoidVisitorAdapter>{
@Override
public void visit(MethodDeclaration methodDeclaration,List collector){
super.visit(methodDeclaration,collector);
collector.add(methodDeclaration.getName());
}
}
}



