java – 如何从活动的Eclipse编辑器中获取当前的方法?
发布时间:2020-11-18 11:18:48 所属栏目:Java 来源:互联网
导读:我正在使用一个 Eclipse插件,这将帮助我编码.基本上是一个String片段的库. 当创建一个新的,我想给它一个类别ClassName.MethodName.X的ID. 编辑器很简单: IWorkbenchPage page = PlatformUI.getWorkbench() .getActiveWorkbenchWindow().getAc
我正在使用一个 Eclipse插件,这将帮助我编码.基本上是一个String片段的库. 当创建一个新的,我想给它一个类别ClassName.MethodName.X的ID. 编辑器很简单: IWorkbenchPage page = PlatformUI.getWorkbench() .getActiveWorkbenchWindow().getActivePage(); IEditorPart activeEditor = page.getActiveEditor(); if(activeEditor.getClass().getName().endsWith("CompilationUnitEditor")){ // do something } 现在…有没有办法使用Eclipse jdt API来获取我的文本光标当前所在的方法的名称? 编辑: IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); IEditorPart activeEditor = page.getActiveEditor(); if(activeEditor instanceof JavaEditor) { ICompilationUnit root = (ICompilationUnit) EditorUtility.getEditorInputJavaElement(activeEditor,false); try { ITextSelection sel = (ITextSelection) ((JavaEditor) activeEditor) .getSelectionProvider().getSelection(); int offset = sel.getOffset(); IJavaElement element = root.getElementAt(offset); if(element.getElementType() == IJavaElement.METHOD){ return element.getElementName()); } } catch (JavaModelException e) { e.printStackTrace(); } } 工作不错虽然这是使用限制类的一个肮脏的解决方案. 解决方法不确定是否要求在当前插入位置周围的方法,或者插入位置正在选择的方法.我会给你两个一,周边方法: IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); IEditorPart activeEditor = page.getActiveEditor(); if(activeEditor instanceof JavaEditor) { IJavaElement elt = ((JavaEditor) activeEditor).getElementAt(((TextSelection) activeEditor.getSelection()).getOffset(),true); if (elt.getElementType == IJavaElement.METHOD) { return (IMethod) elt; } } return null; 重要的方法是getElementAt和getSelection. 这里是如何找到当前由插入符号选择的方法: IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); IEditorPart activeEditor = page.getActiveEditor(); if(activeEditor instanceof JavaEditor) { ITypeRoot root = EditorUtility.getEditorInputJavaElement(this,false); TextSelection sel = ((TextSelection) activeEditor.getSelection()); IJavaElement elt = root.codeSelect(sel.getOffset(),sel.getLength(); if (elt.getElementType == IJavaElement.METHOD) { return (IMethod) elt; } } return null; 这里有趣的方法是codeSelect,它在给定的编译单元或类文件的上下文中解析当前选择. 实际代码将不同,因为您需要在许多地方检查null,但您不需要执行任何其他的instanceof测试. (编辑:岳阳站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 如果Java中的反思减慢了订单的执行速度,为什么这么多框架会
- 如何解决Mybatis--java.lang.IllegalArgumentException: Re
- 浅谈s:select 标签中list存放map对象的使用
- java – 无法实例化类型HttpClient
- java – “Iterable不能被转换到列表” – 不是“List”一种
- java – 并发处理消息的严格顺序
- Java的JSON格式转换库GSON的初步使用笔记
- java web SpringMVC后端传json数据到前端页面实例代码
- java解析php函数json_encode unicode 编码问题
- java – 从Windows命令行运行时如何请求JVM垃圾收集(而不是