我正在共同开发一个Eclipse插件,用户可以从代码中选择类和方法,并将它们附加到保存在不同文件中的注释中。
我想找到一种方法来确定用户在选择创建附件时选择了哪种类型的成员。
例如:
我想附加一个名为" HelloClass"的类。一个名为" HelloNote"的笔记。我选择" HelloClass"编辑器中的成员名称,右键单击并选择我的"创建附件"行动。此操作调用" createAttachment"方法,它已包含在Class和Note之间创建此附件的所有功能。但是,我需要知道附加成员是Class还是Method。这个信息是必要的,因为如果附加了一个方法,我想在我的插件提供的Note Attachment TreeView上显示它所属的类。
我的第一直觉是使用Java Parser库来解析整个文件并查找匹配的成员名称,但这可能会导致其他问题(例如,同一文件中共享方法名称的两个类共同的)。 Eclipse本身已经有了一些走AST的方法(例如Outline视图)。有没有更简单的方法来获取这些数据?
答案 0 :(得分:0)
你基本上想要做org.eclipse.jdt.internal.ui.text.java.hover.AbstractJavaEditorTextHover#getJavaElementsAt(ITextViewer, IRegion)
所做的事情,特别是要达到你可以调用org.eclipse.jdt.core.ICodeAssist#codeSelect(int, int)
并确定所选文本所指的元素的点(从0到 n ,返回数组中的接口类型也表示它是什么类型的语言元素。