在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
看起来ICompilationUnit
实例用于提供字段和方法名称。
然后我不明白如何为jre系统库或第三方库中的类生成ICompilationUnit
实例?或者如果我没有以正确的方式读取代码,那么程序如何找到字段和方法的名称? (我不需要担心偏移和UI的问题,只需要担心数据模型和#34;部分)。
答案 0 :(得分:1)
似乎唯一的选择是创建一个(临时)编译单元,这又需要一个正确设置的Java项目。 基础结构是JDT知道使用哪个JRE,使用哪个编译器设置等所必需的。
请参阅here如何设置Java项目,以及here如何获取编译单元。
编译单元看起来像
class Foo {
void bar() {
java.lang.System.
}
}
和codeComplete()
必须使用偏移量来调用,该偏移量表示System.
之后的位置。
答案 1 :(得分:0)
您可以尝试使用java reflection API获取此特定班级的所有成员(YourClass.getMethods()
或YourClass.getDeclaredMethods()
)。
要根据您的输入使其动态化,您可以使用Class.forName(<fullClassName>)
获取相应的课程(有关详情,请参阅this post)。
您可能遇到的问题是您必须提供完整的合格类名,因此您可能必须检查导入以找出您必须在哪个包中搜索相应的类,但这是唯一的方法这种方法 简单名称并不总是唯一的,因此不适合这种搜索(解释here。