首页 > 编程语言 >java-javaParse解析类的方法名称,行数等

java-javaParse解析类的方法名称,行数等

时间:2023-08-22 15:44:40浏览次数:45  
标签:github java javaparser com System arg import 数等 javaParse

import com.github.javaparser.JavaParser;
import com.github.javaparser.ast.CompilationUnit;
import com.github.javaparser.ast.PackageDeclaration;
import com.github.javaparser.ast.body.ClassOrInterfaceDeclaration;
import com.github.javaparser.ast.body.MethodDeclaration;
import com.github.javaparser.ast.visitor.VoidVisitorAdapter;

import java.io.FileInputStream;

public class Test {

    public static void main(String[] args) throws Exception{
        FileInputStream in = new FileInputStream("/proj/javaparse/src/main/java/modd/dd/dda/Course.java");

        // parse the file
        CompilationUnit cu = JavaParser.parse(in);


        // prints the resulting compilation unit to default system output
//        System.out.println(cu.toString());

        cu.accept(new MethodVisitor(), null);
    }


    private static class MethodVisitor extends VoidVisitorAdapter<Void> {
        @Override
        public void visit(MethodDeclaration n, Void arg) {
            /* here you can access the attributes of the method.
             this method will be called for all methods in this
             CompilationUnit, including inner class methods */
            System.out.println("method:"+n.getName());
            super.visit(n, arg);
        }

        @Override
        public void visit(ClassOrInterfaceDeclaration n, Void arg) {
            System.out.println("class:"+n.getName());
            System.out.println("extends:"+n.getExtendedTypes());
            System.out.println("implements:"+n.getImplementedTypes());

            super.visit(n, arg);
        }

        @Override
        public void visit(PackageDeclaration n, Void arg) {
            System.out.println("package:"+n.getName());
            super.visit(n, arg);
        }
    }
}
//只有parser
<dependency>
    <groupId>com.github.javaparser</groupId>
    <artifactId>javaparser-core</artifactId>
    <version>3.6.5</version>
</dependency>
//或者
//symbolsolver 和 parser
<dependency>
        <groupId>com.github.javaparser</groupId>
        <artifactId>javaparser-symbol-solver-core</artifactId>
        <version>3.6.5</version>
    </dependency>

 

标签:github,java,javaparser,com,System,arg,import,数等,javaParse
From: https://www.cnblogs.com/chenchengzi/p/17648661.html

相关文章

  • java怎么设置定时任务(通过Executors.newScheduledThreadPool(1)方法)
    importjava.text.SimpleDateFormat;importjava.util.Date;importjava.util.concurrent.Executors;importjava.util.concurrent.ScheduledExecutorService;importjava.util.concurrent.TimeUnit;publicclassdingshi{publicstaticvoidmain(String[]args)......
  • java实现大文件上传示例
    ​ 一、功能性需求与非功能性需求要求操作便利,一次选择多个文件和文件夹进行上传;支持PC端全平台操作系统,Windows,Linux,Mac支持文件和文件夹的批量下载,断点续传。刷新页面后继续传输。关闭浏览器后保留进度信息。支持文件夹批量上传下载,服务器端保留文件夹层级结构,服务器端......
  • Java8实现联合排序
    Comparator<MyObject>combined=Comparator.comparing(MyObject::getField1,Comparator.nullsLast(Comparator.naturalOrder())).thenComparing(MyObject::getField2,Comparator.nullsLast(Comparator.naturalOrder())).thenComparing(MyObject::getF......
  • JAVA数组
    数组的定义1.数组的定义相同类型数据的有序集合。数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成。2.数组的声明和创建变量类型变量名称=变量的值int[]numbers={1,2};intnumbers2[]={2,3};Java语言使用new操作符来创建数组,语法如下:int[]nu......
  • 【HarmonyOS】实现将pcm音频文件进行编码并写入文件(API6 Java)
     【关键字】音频编码、管道模式、createEncoder【写在前面】在使用API6开发HarmonyOS应用时,如何将pcm源文件进行编码并写入文件,最后生成aac文件,本文直接附上主要代码开发步骤供大家参考。【主要功能代码】importohos.media.codec.Codec;importohos.media.common.BufferInfo;im......
  • Java开发的一些小技巧
    编写清晰的代码注释:在关键地方添加合适的注释,使代码更易读、易懂。注释应该解释代码的用途、实现思路或者特殊考虑的地方,帮助其他人理解和维护代码。避免使用魔法数值:将常用的魔法数值定义为常量,以便于理解和维护代码。通过给常量起一个有意义的名称,可以提高代码的可读性和可维护性......
  • javascript学习笔记第五天
    今天的笔记functiongetusergradesum(arr=[])传递数组进入匿名函数,假设不确定数组是否会为空可以默认传一个空的数组进入,这样不会报错在匿名方法里面,return之后就直接结束函数了三元运算符好像不能同时使用两个return,例如i>l?returni:retuenl,这样子会报错return时......
  • 【HarmonyOS】实现将pcm音频文件进行编码并写入文件(API6 Java)
    【关键字】音频编码、管道模式、createEncoder 【写在前面】在使用API6开发HarmonyOS应用时,如何将pcm源文件进行编码并写入文件,最后生成aac文件,本文直接附上主要代码开发步骤供大家参考。 【主要功能代码】importohos.media.codec.Codec;importohos.media.common.Buf......
  • 记录一次在Android Studio中,任务:app:compileDebugJavaWithJavac的执行失败了
    因为我命令行覆盖提交了一次git代码,导致git原本的版本不见了,构建项目的时候提示会找不到SDK排查过程:构建项目时提示找不到SDK目录,经过排查后发现是gitpull的时候没有把local.properties这个文件上传上去,导致后面下载回来的项目都没有,而原本的本地目录被我删了 随机根据最初原始目......
  • Java进阶篇-1
    集合进阶双列集合双列集合的特点:D双列集合一次需要存一对数据,分别为键和值键不能重复,值可以重复键和值是一一对应的,每一个键只能找到自己对应的值键+值这个整体我们称之为“键值对”或者“键值对对象”,在Java中叫做"Entry对象"MAP的常用APIMap<String,String>m=......