Java eclipse如何在jar文件中推断类的方法
比如: 当在MyUtility后面加上“.”时,eclipse将告诉您可以使用的所有方法,eclipse是如何实现这一点的Java eclipse如何在jar文件中推断类的方法,java,eclipse,jar,Java,Eclipse,Jar,比如: 当在MyUtility后面加上“.”时,eclipse将告诉您可以使用的所有方法,eclipse是如何实现这一点的 eclipse使用即时反射吗?(如答案?第6.1.2节描述了eclipse软件的体系结构。Java开发工具(JDT)它简要描述了所使用的增量构建系统。该系统将具有填充自动完成机制的所有相关信息 对于确切的机制,您必须查看eclipse源代码。是的,eclipse(和任何其他JavaIDE)使用反射 如果事实上Eclipse为每个项目的库使用类加载器,那么它将类加载到jar文
eclipse使用即时反射吗?(如答案?第6.1.2节描述了eclipse软件的体系结构。Java开发工具(JDT)它简要描述了所使用的增量构建系统。该系统将具有填充自动完成机制的所有相关信息 对于确切的机制,您必须查看eclipse源代码。是的,eclipse(和任何其他JavaIDE)使用反射 如果事实上Eclipse为每个项目的库使用类加载器,那么它将类加载到jar文件中,然后一切都很简单,它可以使用反射获取信息
顺便说一句,JavaIDE不仅使用反射,还读取类调试信息,提取参数名等等。中有一个解释。基本上,EclipseJava编译器会为代码构建一个抽象语法树(AST),让它能够快速找到自动完成所需的所有信息 因此,它并没有为此使用反射,而是将代码编译成一种内部形式,以便快速访问
当没有可用的源代码时(您只有一个.class文件),仍然可以构造包含完成所需的类方法和类型的AST部分。这似乎是通过直接读取.class文件来完成的,而不是使用类加载器(
org.eclipse.jdt.internal.compiler.classfmt.ClassFileReader
)eclipse有自己的java编译器;但是您当然可以通过反射来实现它。您认为JVM如何知道存在哪些方法?如果这不是一个微不足道的问题,那么Java生态系统将如何工作呢?感谢您的回复,您提供的链接确实清楚地解释了这一点。
import com.xxx.utility.*;
class MyClass{
public static void main(String[] args){
MyUtiliy ut = new MyUtiliy();
MyUtility.doAdd(5, 6);
.......
}
}