如何从.java文件中获取方法列表

时间:2014-12-19 15:13:02

标签: java reflection

我的Java程序中有一个.java文件的路径。我想获取.java文件中可用的方法列表。

例如, 我在'C:\ temp \ Foo.java'中有一个.java文件,如下所示:

class Foo{
    public int add(int a, int b){ return a+b;}
    public int sub(int a, int b){ return a-b;}
}

在我的程序中,我想获取方法名称addsub。 是否有任何java api实现相同? 我知道对于.class文件,我们可以使用Reflection实现它,但.java文件是否可以实现?

1 个答案:

答案 0 :(得分:3)

您可以使用javaparser库。

以下是维基页面的示例代码:

public class MethodPrinter {

    public static void main(String[] args) throws Exception {
        // creates an input stream for the file to be parsed
        FileInputStream in = new FileInputStream("test.java");

        CompilationUnit cu;
        try {
            // parse the file
            cu = JavaParser.parse(in);
        } finally {
            in.close();
        }

        // visit and print the methods names
        new MethodVisitor().visit(cu, null);
    }

    /**
     * Simple visitor implementation for visiting MethodDeclaration nodes. 
     */
    private static class MethodVisitor extends VoidVisitorAdapter {

        @Override
        public void visit(MethodDeclaration n, Object 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(n.getName());
        }
    }
}