如何扩展 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 的重命名重构以在完成后触发另一个重构的主要内容,如果未能解决你的问题,请参考以下文章