Eclipse JDT:如何获取Java内容辅助的数据模型

CMZ*_*MZS 5 java eclipse eclipse-rcp eclipse-jdt

在Eclipse IDE上编写Java代码时,按Control + Space将弹出内容辅助窗口.
例如,内容辅助窗口System.将列出类System的所有可用字段和方法.

我需要通过代码访问内容辅助窗口的"数据模型".
使用上面的例子,它是:给定类名System,我如何检索所有可用的字段和方法?
我花了一些时间在grepcode.com上这三个类的源代码:

org.eclipse.jdt.ui.text.java.JavaContentAssistInvocationContext
org.eclipse.jdt.internal.ui.text.java.JavaCompletionProposalComputer
org.eclipse.jdt.ui.text.java.CompletionProposalCollector
Run Code Online (Sandbox Code Playgroud)

看起来像一个ICompilationUnit实例用于提供字段和方法名称.

那我不明白如何为ICompilationUnitjre系统库或第三方库中的类生成实例?或者,如果我没有以正确的方式读取代码,那么程序如何查找字段和方法名称?(我不需要担心偏移和UI的东西,只需要担心"数据模型"部分).

Rav*_*ven 0

您可以尝试使用java 反射 APIYourClass.getMethods()来获取该特定类(或)的所有成员YourClass.getDeclaredMethods()

为了根据您的输入使其动态化,您可以使用它Class.forName(<fullClassName>)来获取相应的类(有关更多信息, 请参阅这篇文章)。

您可能遇到的问题是,您必须提供完整的限定类名称,因此您可能必须检查导入以找出必须在哪个包中搜索相应的类,但这是使用此方法的唯一方法。
简单的名称并不总是唯一的,因此不适合这种搜索(在此处解释) 。