我很抱歉这个愚蠢的问题,我的一个朋友需要准备一些大学工作,实际上他选择了用 Javascript 创建 java 语法编辑器。他用 javascript 编写了 kick ass 文本解析器平台(很快就会对 public 可用),现在他需要在这个编辑器中实现自动完成。
有没有可用的资源在哪里可以找到所有标准的 JVM 类?我的意思是,类的名称及其方法/属性。
这可能是您正在寻找的
我创建了一个列表,现在在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();
}
}
没有这种易于机器处理的列表。(是的,确保信息在 javadocs 中,但你必须从 HTML 中“刮掉”它......哎呀!!)
但是,您不应该需要这样的列表。您可以遍历有效类路径上的所有“.class”文件,并使用 BCEL 之类的东西从“.class”文件中提取方法名称。这比固定列表要好,因为:
标准 Java 库中的集合类和方法从一个版本更改为下一个版本,并且
您希望编辑器能够完成其他类/方法名称;例如,用于用户代码库中的类,以及他/她正在使用的第 3 方库中的类。