如何扩展 Eclipse 的重命名重构以在完成后触发另一个重构

Posted

技术标签:

【中文标题】如何扩展 Eclipse 的重命名重构以在完成后触发另一个重构【英文标题】:How to extend Eclipse's rename refactoring to trigger another refactoring after its completion 【发布时间】:2012-11-01 22:13:12 【问题描述】:

我正在尝试扩展 Eclipse 的重命名重构以调用另一个重命名重构。

public class Person   
  ...  


public class PersonDAO   
   public List<Person> getPersonByName(String name)   
     ...  
     
  

将类 Person 重命名为 User 后,我希望将 getPersonByName 之类的方法重命名为 getUserByName

我已经扩展了 RenameParticipant 并尝试通过使用 JDT 重命名重构和 ASTRewrite 来实现。

问题是我创建的更改与原始重命名重构更改发生冲突。 我不能使用postCreateChange(似乎基本处理器只返回null),现在我被卡住了。

非常感谢任何帮助。

【问题讨论】:

您的更改与原来的重命名重构更改有什么冲突? 【参考方案1】:

更好的建议:

1) 使用休眠。然后,您将使用 Criteria API,不需要多余地指定“Person”,并且可以以模块化方式附加其他限制/条件 - 适合列表/搜索页面。

2) 调用您的 API getByName()。 List people = personDao.getPersonByName("...") 已经有点重复重复了。

整个事情看起来有点像我在以前的项目中看到的执行 DAO、数据库访问或持久性的“错误方式”。过于冗长但不灵活且实用性低的标准的组合,让我想起了 90 年代中期手工编写的持久性或服务做得不好。

【讨论】:

【参考方案2】:

无法通过重构来更改由新值“User”定义的方法中的字符串“Person”。

但您可以使用 Ctrl+H 在整个工作区中搜索所需的字符串并将其替换为新值。

当您单击替换按钮时,Eclipse 会询问您将替换搜索字符串的新值。

【讨论】:

以上是关于如何扩展 Eclipse 的重命名重构以在完成后触发另一个重构的主要内容,如果未能解决你的问题,请参考以下文章

从Eclipse插件重命名项目

Eclipse 重构

eclipse 工作区:如何重命名工作区

提交后修复Mercurial存储库中的重命名

如何使用C语言进行文件的重命名及删除操作?

Visual Studio之重构