所有Java类名称及其方法的列表

时间:2013-04-28 09:32:17

标签: java jvm

我很抱歉愚蠢的问题,我的一个朋友需要准备一些大学工作,实际上他选择用Javascript创建java语法编辑器。他用javascript编写了kick ass Text解析器平台(很快就会公开),现在他需要在这个编辑器中实现自动完成功能。

是否有任何可用的源代码可以在哪里找到所有标准类的JVM?我的意思是,类的名称和它的方法/属性。

3 个答案:

答案 0 :(得分:3)

This可能就是您要搜索的内容

答案 1 :(得分:3)

我创建了一个列表,该列表现已在https://dl.dropboxusercontent.com/u/1004486/classes.txt.zip

上线

用于创建它的代码是(在rt.jar的解压缩文件夹中找到。-name * .class之后):

public class CodeListing {

    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new FileReader("classes.txt"));

        String line = br.readLine();
        Vector<String> classes = new Vector<>();
        while (line != null) {

            line = line.substring(2);
            if (!line.contains("$"))
                classes.add(line.replaceAll("/", ".").replaceAll(".class", ""));

            line = br.readLine();
        }
        Collections.sort(classes);
        for (String c : classes) {


            System.out.println("    "+c);
            try {
                for (Method m : Class.forName(c).getMethods()) {

                    boolean first = true;
                    System.out.print("        "+c+"."+m.getName()+"(");
                    for (Class<?> t : m.getParameterTypes()) {
                        if (!first)
                            System.out.print(", ");
                        else
                            first = false;
                        System.out.print(t.getSimpleName());
                    }
                    System.out.println(") : "+m.getReturnType().getSimpleName());

                }
                System.out.println();
            }
            catch (Error e) {}
            catch (Exception e) {}
        }
        br.close();
    }   
}

答案 2 :(得分:1)

在易于机器处理的形式中没有这样的列表。 (是的,确定信息是在javadocs中,但你必须从HTML中“刮掉”... ick !!)

但是,您不应该需要这样的列表。您可以迭代有效类路径上的所有“.class”文件,并使用类似BCEL的东西从“.class”文件中提取方法名称。这比固定列表更好,因为:

  • 标准Java库中的集合类和方法从一个版本更改为下一个版本,

  • 您希望编辑器能够完成其他类/方法名称;例如用于用户代码库中的类,以及他/她正在使用的第三方库。