Methods 获取封闭元素

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

我正在使用Eclipse源代码编辑器中的选择。我定义了一个键绑定,它在当前插入符号位置获取“文本”。我设法将当前插入符号位置解析为一个元素

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