如何以编程方式使用JDT重命名方法
我的目标是以编程方式为Java源文件中的方法调用Refactor >> Rename
Eclipse命令。 重命名这样的方法也应该将改变应用于正在使用/引用该方法的所有实例。
我相信JDT有一个重构API,但无法找到任何相同的文档或教程。
有人能指引我朝着正确的方向发展吗?
编辑:在运行时不需要更改。
我认为你最有希望的方法是去eclipse源代码。
Refactor >> Rename
对应的起点是org.eclipse.jdt.ui.actions.RenameAction
。 这是整个重命名重构,但它可以重命名从方法到文件的任何东西。 更适合你的是RenameSupport.create(IMethod, String, int)
。
您可以看到,在处理器( RenameVirtualMethodProcessor
或RenameNonVirtualMethodProcessor
周围创建了RenameRefactoring
类,然后将其发送到RenameSupport
的新实例。 RenameSupport
处理所有UI以配置重构,但由于您正在以编程方式执行此操作,因此您只需要使用各种processor.set*()
方法配置的RenameRefactoring
和处理器。
现在你有一个RenameRefactoring
的配置实例。 怎么办? Eclipse中的实际操作在两个Job实现中执行。 请PerformChangeOperation
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())
在那里有很多支持代码用于撤消,进度条,异步执行,工作空间检查点等,您可能需要或可能需要这些代码,具体取决于您希望如何运行它。 但这是如何运行重构的胆量。
我认为这将帮助你,如果你正在寻找。
链接地址: http://www.djcxy.com/p/64973.html