Methods 获取封闭元素
我正在使用Eclipse源代码编辑器中的选择。我定义了一个键绑定,它在当前插入符号位置获取“文本”。我设法将当前插入符号位置解析为一个元素Methods 获取封闭元素,methods,eclipse-plugin,swt,jface,Methods,Eclipse Plugin,Swt,Jface,我正在使用Eclipse源代码编辑器中的选择。我定义了一个键绑定,它在当前插入符号位置获取“文本”。我设法将当前插入符号位置解析为一个元素 private void processEditorSelection(IEditorPart part, ITextSelection selection) { IEditorInput editorInput = ((IEditorPart) part).getEditorInput(); final ITyp
private void processEditorSelection(IEditorPart part, ITextSelection selection) {
IEditorInput editorInput = ((IEditorPart) part).getEditorInput();
final ITypeRoot root = (ITypeRoot) JavaUI.getEditorInputJavaElement(editorInput);
if (root != null) {
int offset = (selection).getOffset();
IJavaElement[] codeSelect = root.codeSelect(offset, 0);
if (codeSelect.length > 0) {
//codeSelect[0...n] are my resolved elements at the current caret pos.
}
我还没有弄明白的是,如何解析封闭类型。例如:
public void do() {
System.out.println("it");
}
如果插入符号在System.out上,我将获得System out调用的JavaElement,但实际上我对封闭方法感兴趣。有人知道如何向Eclipse请求封闭类型吗?比如,我目前的职位所包含的编译单元或方法是什么
感谢您的回答您希望执行以下操作:
ITypeRoot root = (ITypeRoot) JavaUI.getEditorInputJavaElement(editorInput);
IJavaElement elt = root.getElementAt(caretPosition);
这将找到封闭元素,它可能是i字段
、i方法
、或ICompilationUnit
。要获取封闭类型,请调用以下命令:
IType type = (IType) elt.getAncestor(IJavaElement.TYPE);
如果没有封闭类型,则此方法返回null