加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 如何使用JDT以编程方式重命名方法

发布时间:2020-12-15 03:00:20 所属栏目:Java 来源:网络整理
导读:我的目标是以编程方式调用Refactor为 Java源文件中的方法重命名 Eclipse命令.重命名方法也应该将更改应用于使用/引用此方法的所有实例. 我相信JDT有一个重构API,但无法找到相同的任何文档或教程. 有人可以指出我正确的方向. 编辑:运行时不需要更改. 解决方
我的目标是以编程方式调用Refactor>>为 Java源文件中的方法重命名 Eclipse命令.重命名方法也应该将更改应用于使用/引用此方法的所有实例.

我相信JDT有一个重构API,但无法找到相同的任何文档或教程.

有人可以指出我正确的方向.

编辑:运行时不需要更改.

解决方法

我认为你最有希望的方法是去eclipse源代码.

>使用源代码下载所需的版本.特别是,您需要JDT插件的源代码,它包含在“经典”版本中.以下所有内容均基于4.2.1.
>启动到空工作区.
>文件 – >导入:插件和片段
>从“活动目标平台”,“从所有选择…”,“带有源文件夹的项目”导入
>至少选择org.eclipse.jdt.ui和org.eclipse.ltk.core.refactoring.

对应于Refactor>>的起点.重命名是org.eclipse.jdt.ui.actions.RenameAction.这是整个重命名重构,但它可以重命名从方法到文件的任何内容.与您更相关的是RenameSupport.create(IMethod,String,int).

您可以看到在处理器(RenameVirtualMethodProcessor或RenameNonVirtualMethodProcessor)周围创建了RenameRefactoring类,然后将其发送到RenameSupport的新实例. RenameSupport处理所有用于配置重构的UI,但由于您以编程方式执行,因此只需要使用各种processor.set *()方法配置的RenameRefactoring和处理器.

现在您已经配置了RenameRefactoring实例.怎么办? Eclipse中的实际操作跨两个Job实现执行.有关详细信息,请查看RefactoringExecutionHelper.Operation和PerformChangeOperation.

这一切归结为什么?除了异常处理的所有细节,具有撤消堆栈和工作区检查点之外,您可以使用以下步骤重命名“虚拟”方法:

IMethod methodToRename = <....>
RenameMethodProcessor processor = new RenameVirtualMethodProcessor(methodToRename)
processor.setUpdateReferences(true);
processor.setNewElementName("newMethodName");

RenameRefactoring fRefactoring = new RenameRefactoring(processor);
fChange= fRefactoring.createChange(new NullProgressMonitor());
fChange.initializeValidationData(new NullProgressMonitor());
fChange.perform(new NullProgressMonitor())

在那里有很多支持代码用于撤销,进度条,异步执行,工作空间检查点等,您可能需要或可能需要这些代码,具体取决于您希望如何运行它.但这是如何运行重构的胆量.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读