-3

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

有没有可用的资源在哪里可以找到所有标准的 JVM 类?我的意思是,类的名称及其方法/属性。

4

3 回答 3

3

可能是您正在寻找的

于 2013-04-28T09:35:29.353 回答
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();
    }   
}
于 2013-04-28T11:30:26.177 回答
1

没有这种易于机器处理的列表。(是的,确保信息在 javadocs 中,但你必须从 HTML 中“刮掉”它......哎呀!!)

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

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

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

于 2013-04-28T10:43:53.440 回答