Java类和it的所有名称的列表';s方法
我为这个愚蠢的问题感到抱歉,我的一个朋友需要准备一些大学作业,实际上他选择用Javascript创建java语法编辑器。他用javascript编写了一个非常棒的文本解析器平台(这将很快提供给公众),现在他需要在这个编辑器中实现自动完成Java类和it的所有名称的列表';s方法,java,jvm,Java,Jvm,我为这个愚蠢的问题感到抱歉,我的一个朋友需要准备一些大学作业,实际上他选择用Javascript创建java语法编辑器。他用javascript编写了一个非常棒的文本解析器平台(这将很快提供给公众),现在他需要在这个编辑器中实现自动完成 在哪里可以找到JVM的所有标准类?我的意思是,类的名称和它的方法/属性 可能就是您正在搜索的内容没有这样一个易于机器处理的列表。(是的,当然这些信息在javadocs中,但是你必须从HTML中“刮”出来……点击!!) 但是,您不应该需要这样的列表。您可以迭代有效
在哪里可以找到JVM的所有标准类?我的意思是,类的名称和它的方法/属性 可能就是您正在搜索的内容没有这样一个易于机器处理的列表。(是的,当然这些信息在javadocs中,但是你必须从HTML中“刮”出来……点击!!) 但是,您不应该需要这样的列表。您可以迭代有效类路径上的所有“.class”文件,并使用类似BCEL的方法从“.class”文件中提取方法名称。这比固定列表要好,因为:
- 标准Java库中的集合、类和方法从一个版本更改为下一个版本,并且
- 您希望编辑器能够完成其他类/方法名称的编写;e、 g.用于用户代码库中的类,以及用户正在使用的第三方库中的类
公共类代码列表{
公共静态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();
}
}