eclipse如何推断jar文件中类的方法

时间:2014-01-01 05:13:33

标签: java eclipse jar

像:

import com.xxx.utility.*;
class MyClass{
    public static void main(String[] args){
        MyUtiliy ut = new MyUtiliy();
        MyUtility.doAdd(5, 6);
        .......
    }    
}

当放“。”在MyUtiliy之后,eclipse将告诉你所有可以使用的方法,eclipse如何实现这个目标?

eclipse是否会动态使用反射? (比如this thread的回答?)

3 个答案:

答案 0 :(得分:0)

eclipse软件的体系结构在6.1.2节中描述here。 Java开发工具(JDT)简要介绍了使用的增量构建系统。该系统将具有填充自动完成机制的所有相关信息。

对于确切的机制,你必须查看eclipse源代码。

答案 1 :(得分:0)

是Eclipse(以及任何其他Java IDE)使用反射。

如果Eclipse为每个项目的库使用ClassLoader,那么它会在jar文件中加载类,之后一切都很简单,它可以使用反射获取信息。

顺便说一句,java IDE不仅使用反射,还读取类调试信息,提取参数名称等等。

答案 2 :(得分:0)

this article中有解释。基本上,Eclipse Java编译器构建了代码的抽象语法树(AST),使其能够非常快速地找到自动完成所需的所有信息。

所以它没有使用反射,而是将代码编译成内部形式以便快速访问。

当没有可用的源代码(你只有一个.class文件)时,仍然可以构造AST的一部分,其中包含完成所需的类方法和类型。这似乎是通过直接读取.class文件而不是使用类加载器(org.eclipse.jdt.internal.compiler.classfmt.ClassFileReader)来完成的。