繁体   English   中英

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

[英]Eclipse JDT: how to get data model for Java content assist

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

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

org.eclipse.jdt.ui.text.java.JavaContentAssistInvocationContext
org.eclipse.jdt.internal.ui.text.java.JavaCompletionProposalComputer
org.eclipse.jdt.ui.text.java.CompletionProposalCollector

似乎唯一的选择是创建一个(临时)编译单元,这又需要一个正确设置的Java项目。 JDT必须知道基础结构才能知道使用了哪个JRE,使用了哪些编译器设置等。

这里如何建立一个Java项目, 在这里如何得到一个编译单元。

编译单元看起来像

class Foo {
  void bar() {
    java.lang.System.
  }
}

并且必须使用表示System.之后的位置的偏移来调用codeComplete() System.

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

要根据您的输入使其动态化,您可以使用Class.forName(<fullClassName>)来获取相应的类(有关详细信息,请参阅此文章 )。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM