当前位置: 首页 > 面试题库 >

Java:解析Java源代码,提取方法

杜俭
2023-03-14
问题内容

我希望解析Java源代码文件,并提取方法源代码。

我需要这样的方法:

/** Returns a map with key = method name ; value = method source code */
Map<String,String> getMethods(File javaFile);

有没有简单的方法可以做到这一点,有一个库可以帮助我构建方法,等等?


问题答案:

从https://javaparser.org/下载Java解析器

您必须编写一些代码。此代码将调用解析器…它将返回一个CompilationUnit:

            InputStream in = null;
            CompilationUnit cu = null;
            try
            {
                    in = new SEDInputStream(filename);
                    cu = JavaParser.parse(in);
            }
            catch(ParseException x)
            {
                 // handle parse exceptions here.
            }
            finally
            {
                  in.close();
            }
            return cu;

注意:SEDInputStream是输入流的子类。您可以根据需要使用FileInputStream。

您必须创建一个访客。您的访问者会很轻松,因为您仅对方法感兴趣:

  public class MethodVisitor extends VoidVisitorAdapter
  {
        public void visit(MethodDeclaration n, Object arg)
        {
             // extract method information here.
             // put in to hashmap
        }
  }

要调用访客,请执行以下操作:

  MethodVisitor visitor = new MethodVisitor();
  visitor.visit(cu, null);


 类似资料:
  • 本文向大家介绍Java源码解析Integer方法解读,包括了Java源码解析Integer方法解读的使用技巧和注意事项,需要的朋友参考一下 toUnsignedString方法解读 看到Integer中有这样的一个方法把int转为Unsigned类型的字符串,但是有几个点不是很清楚,经过查询资料弄懂了,解读如下: 这里的参数shift是代表的进制,如果是二进制的话shift是2,八进制那么就是8,

  • 本文向大家介绍java 源码分析Arrays.asList方法详解,包括了java 源码分析Arrays.asList方法详解的使用技巧和注意事项,需要的朋友参考一下 最近,抽空把java Arrays 工具类的asList 方法做了源码分析,在网上整理了相关资料,记录下来,希望也能帮助读者! Arrays工具类提供了一个方法asList, 使用该方法可以将一个变长参数或者数组转换成List 。

  • 本文向大家介绍Java Reference源码解析,包括了Java Reference源码解析的使用技巧和注意事项,需要的朋友参考一下 Reference对象封装了其它对象的引用,可以和普通的对象一样操作,在一定的限制条件下,支持和垃圾收集器的交互。即可以使用Reference对象来引用其它对象,但是最后还是会被垃圾收集器回收。程序有时候也需要在对象回收后被通知,以告知对象的可达性发生变更。  J

  • 问题内容: 我需要以下工具: 方便地解析Java源代码并轻松访问给定的元素。 轻松生成源代码文件,轻松将数据结构转换为代码 有什么好的技巧,库,框架,工具吗?谢谢你的帮助。 问题答案: 从Java 6开始,编译器在JDK中包含一个API。通过它,您可以通过API 访问Java解析器的结果。JDK5以Mirror API 的形式提供了相同的功能。有一个很好的介绍性文章在这里。 我见过的最好的代码生成

  • 本文向大家介绍JDK的Parser来解析Java源代码详解,包括了JDK的Parser来解析Java源代码详解的使用技巧和注意事项,需要的朋友参考一下 在JDK中,自带了一套相关的编译API,可以在Java中发起编译流程,解析Java源文件然后获取其语法树,在JDK的tools.jar(OSX下可以在/Library/Java/JavaVirtualMachines/jdk_version/Con