首页 > 解决方案 > 哪些重构工具可以重命名 Java 类及其所有类似名称的实例?

问题描述

假设我的 NetBeans Java 项目中有一个名为的类Orange,我想将其重命名为Apple. NetBeans 重命名重构可以毫无困难地处理这个问题。但是,我的项目包含许多Orange名为 的类的实例orange,导致许多令人困惑的重构代码,如下所示:

final Apple orange = new Apple();

作为同一重构的一部分,我希望将所有这些实例(最好还有像juicyOrangeand之类的前缀)defaultOrange重命名为apple,juicyApple等。重构当然不应该影响不同类的变量(例如Colour orange应该保持原样),或者上下文中orange已经存在apple变量的情况。IntelliJ IDEA似乎提供了这个功能,但我在 NetBeans 8.2 中找不到它。

NetBeans 本身或任何 NetBeans 插件中是否提供或计划了此功能?如果做不到这一点,是否有任何独立的 Java 重构工具提供它?

标签: javanetbeansrefactoringrenameautomated-refactoring

解决方案


IntelliJ IDEA 似乎提供了这个功能,但我在 NetBeans 8.2 中找不到它。

您在 Intellij IDEA 中描述的重构功能在 NetBeans 8.2 和 NetBeans 9.0 中都不存在。

NetBeans 本身或任何 NetBeans 插件中是否提供或计划了此功能?

我不知道添加此功能的任何计划,也不知道有任何 NetBeans 插件可以满足您的需求。如果您希望将此功能添加到 Apache NetBeans 9.0 中,请考虑通过错误报告提出增强请求

也就是说,Edit > Replace in Projects...提供的功能可能值得将其视为更粗略的替代方案:

替换项目

  • 您可以为要搜索的文本提供正则表达式。
  • 可以通过多种方式指定要考虑修改的文件:

    • 当前项目。
    • 选定的项目。
    • 所有打开的项目。
    • 打开文件。
    • 选定的文件。
  • 您还可以为要修改的文件提供一个模式,以便进行复杂的选择。例如:

    • 修改项目ABC中所有名称中包含“Widget”的文件,文件扩展名为“jsf”
    • 只修改扩展名为“properties”的打开文件。

当然,这个功能并不复杂,它会盲目地做任何你告诉它的事情。它无法处理Colour orange您描述的场景(除非您确保根据您的文件选择标准排除相关文件)。

如果做不到这一点,是否有任何独立的 Java 重构工具提供它?

推荐软件在这里是特别离题的,尽管在这里的一些封闭问题中已经提出了这一点。(请参阅我可以在这里询问哪些主题?


推荐阅读