KKG*_*uly 4 java eclipse reflection autocomplete
我听说Eclipse是使用反射来提供其自动完成功能的,但是它实际上是如何工作的?预先。
反射API只能告诉您正在运行的代码(或至少以完整的编译状态将其加载到程序中并准备运行)。当您编辑代码时,它没有运行,也没有加载到JVM中,因此可能无法使用反射进行检查。Eclipse的自动完成功能中还有一些信息无法通过反射获得,例如局部(方法内)变量的名称。
相反,Eclipse有其自己的编译器。它直接读取源代码,并使用它来构建自己对可用类,方法,构造函数,字段和局部变量的理解。该信息被包括自动完成在内的多种编辑功能所使用。
另外,当源代码不可用时,Eclipse可以通过直接读取已编译的.class文件来获取自动完成的部分信息。.class文件结构已被完整记录。(有几个原因导致这仅仅是“部分”信息。一方面,如果在编译类时没有调试信息,则它不包括有关局部变量的信息。它通常也不包括方法参数的名称。(Java 8已以类文件格式添加了新的“ MethodParameters”属性,该属性可用于记录方法参数名称,但是javac默认情况下不执行此操作。))
我不是Eclipse内部专家,但我认为/希望这是准确的。
| 归档时间: |
|
| 查看次数: |
870 次 |
| 最近记录: |