我很抱歉愚蠢的问题,我的一个朋友需要准备一些大学工作,实际上他选择用Javascript创建java语法编辑器。他用javascript编写了kick ass Text解析器平台(很快就会公开),现在他需要在这个编辑器中实现自动完成功能。
是否有任何可用的源代码可以在哪里找到所有标准类的JVM?我的意思是,类的名称和它的方法/属性。
答案 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库中的集合类和方法从一个版本更改为下一个版本,
您希望编辑器能够完成其他类/方法名称;例如用于用户代码库中的类,以及他/她正在使用的第三方库。