Java类和it的所有名称的列表';s方法

Java类和it的所有名称的列表';s方法,java,jvm,Java,Jvm,我为这个愚蠢的问题感到抱歉,我的一个朋友需要准备一些大学作业,实际上他选择用Javascript创建java语法编辑器。他用javascript编写了一个非常棒的文本解析器平台(这将很快提供给公众),现在他需要在这个编辑器中实现自动完成 在哪里可以找到JVM的所有标准类?我的意思是,类的名称和它的方法/属性 可能就是您正在搜索的内容没有这样一个易于机器处理的列表。(是的,当然这些信息在javadocs中,但是你必须从HTML中“刮”出来……点击!!) 但是,您不应该需要这样的列表。您可以迭代有效

我为这个愚蠢的问题感到抱歉,我的一个朋友需要准备一些大学作业,实际上他选择用Javascript创建java语法编辑器。他用javascript编写了一个非常棒的文本解析器平台(这将很快提供给公众),现在他需要在这个编辑器中实现自动完成


在哪里可以找到JVM的所有标准类?我的意思是,类的名称和它的方法/属性

可能就是您正在搜索的内容

没有这样一个易于机器处理的列表。(是的,当然这些信息在javadocs中,但是你必须从HTML中“刮”出来……点击!!)

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

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

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


我创建了一个列表,现在在

用于创建它的代码是(在rt.jar的提取文件夹中的find.-name*.class之后):

公共类代码列表{
公共静态void main(字符串[]args)引发异常{
BufferedReader br=新的BufferedReader(新文件读取器(“classes.txt”);
String line=br.readLine();
向量类=新向量();
while(行!=null){
行=行。子字符串(2);
如果(!line.contains($))
添加(行.replaceAll(“/”,“).replaceAll(“.class”,”);
line=br.readLine();
}
集合。排序(类);
for(字符串c:类){
系统输出打印项次(“+c”);
试一试{
for(方法m:Class.forName(c.getMethods()){
布尔值优先=真;
System.out.print(“+c+”+m.getName()+”(“”);
对于(类t:m.getParameterTypes()){
如果(!第一个)
系统输出打印(“,”);
其他的
第一个=假;
System.out.print(t.getSimpleName());
}
System.out.println(“):”+m.getReturnType().getSimpleName());
}
System.out.println();
}
捕获(错误e){}
捕获(例外e){}
}
br.close();
}   
}

他为什么不发布这个问题为什么他不先做些研究…为什么他不看文档?如果他连JavaDocs都找不到的话,他似乎不是一个优秀的程序员。。。。他不懂英语,所以无法发帖,他向我求助。因为我不懂Java,所以我帮不了他,把问题贴在这里。。。。
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();
    }   
}