如何在 Eclipse 中查找选定成员的类型?

How to find the type of a selected member in Eclipse?

我正在共同开发一个 Eclipse 插件,用户可以在其中 select Class 来自他们代码的 es 和方法,并将它们附加到保存在不同文件中的注释。

我想找到一种方法来确定用户在选择创建附件时 select编辑了哪种类型的成员。

例如:

我想将名为 "HelloClass" 的 class 附加到名为 "HelloNote" 的便笺中。我select编辑器里的"HelloClass"会员名,右击select我的"Create Attachment"动作。此操作调用 "createAttachment" 方法,该方法已包含在 Class 和注释之间创建此附件的所有功能。但是,我需要知道附加成员是 Class 还是方法。此信息是必需的,因为如果附加了方法,我想在我的插件提供的注释附件 TreeView 上显示它所属的 class。

我的第一直觉是使用 Java Parser 库来解析整个文件并查找匹配的成员名称,但这可能会导致其他问题(例如,两个 classes 在相同的文件共享一个共同的方法名称)。 Eclipse 本身已经有一些遍历 AST 的方法(例如大纲视图)。有没有更简单的方法来获取这些数据?

你基本上想做 org.eclipse.jdt.internal.ui.text.java.hover.AbstractJavaEditorTextHover#getJavaElementsAt(ITextViewer, IRegion) 所做的事情,特别是为了达到你可以调用 org.eclipse.jdt.core.ICodeAssist#codeSelect(int, int) 并确定所选文本引用哪些元素(从 0 到 n,返回数组中的接口类型,也说明是什么语言元素)。