我的目的是为Refactor >> Rename
Java Source
File中的方法以编程方式调用Eclipse命令。重命名这样的方法还应该将更改应用于使用/引用此方法的所有实例。
我相信JDT具有Refactoring API,但无法找到相同的任何文档或教程。
有人能指出我正确的方向吗?
编辑:运行时不需要更改。
我认为您最有前途的方法是使用Eclipse源代码。
对应的起点Refactor >> Rename
是org.eclipse.jdt.ui.actions.RenameAction
。那是为了整体重命名重构,它可以重命名从方法到文件的任何内容。与您更相关的是RenameSupport.create(IMethod, String, int)
。
您可以在此处看到RenameRefactoring
围绕一个处理器(一个RenameVirtualMethodProcessor
或一个)创建了一个类RenameNonVirtualMethodProcessor
,然后将其发送到的新实例RenameSupport
。
RenameSupport
处理所有UI来配置重构,但是由于您以编程方式进行重构,因此您只需要RenameRefactoring
和处理器,即可使用各种processor.set*()
方法进行配置。
现在,您已配置的实例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())
那里有很多用于撤消,进度条,异步执行,工作区检查点等的支持代码,您可能会或可能需要根据运行方式的不同而定。但这就是如何运行重构的胆量。
问题内容: 我正在使用JDT生成一些类。之后,我想格式化整个ICompilationUnit,就像我在没有选择的打开的编辑器中按Ctrl + Shift + F(源>格式)一样。 高度赞赏JDT中用于以编程方式格式化源代码的API的任何指针。 另外:我像这样尝试过,但是代码没有改变。我在说什么 问题答案: 这可能是一个错误,但是使用Elcipse 4.2.2中的JDK时,有必要创建ICompila
有没有图书馆可以为我做这件事?例如,如果我重命名一个方法,我也需要重命名它的所有用例。 这不仅适用于方法,还适用于所有被重命名的东西(字段、参数...)
本文向大家介绍如何以编程方式“重启” iOS应用程序?,包括了如何以编程方式“重启” iOS应用程序?的使用技巧和注意事项,需要的朋友参考一下 无论如何,您都无法重启iOS应用程序,即使您能够使用某些私有api,您的应用程序也将被Apple拒绝,并且不会被视为App Store版本。
使用 lavas init 创建的模板项目中,在以下场景下都会以编程方式使用 Lavas: server.dev.js 开发环境下的 SPA/SSR 模式。 server.prod.js 生产环境下的 SSR 模式。 可见以编程方式使用 Lavas 的主要场景就是 SSR 模式,而在 SPA 模式下仅仅是供开发服务器使用。因此,如果开发者选择了 SSR 模式,阅读下面的内容将十分有帮助: 如何选择
问题内容: 您知道JavaScript的“ JSON Beautifier”吗? 从 至 例 问题答案: 程序格式化解决方案: 许多现代浏览器(包括IE8)支持的方法可以输出美化的JSON字符串: 此方法还包含在json2.js中,用于支持较旧的浏览器。
Spring批道具也是如此: