哪些重构工具可以重命名 Java class 及其所有类似名称的实例?

Which refactoring tools can rename a Java class along with all its similarly-named instances?

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

final Apple orange = new Apple();

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

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

It seems that IntelliJ IDEA offers this functionality, but I can't find it in NetBeans 8.2.

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

Is this functionality available or planned either in NetBeans itself or in any NetBeans plug-in?

我不知道有任何添加此功能的计划,也不知道有任何 NetBeans 插件可以满足您的需求。如果您希望将此功能添加到 Apache NetBeans 9.0 consider raising an enhancement request through a bug report.

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

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

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

    • 修改项目[=33]中文件扩展名为"jsf"的所有名称中包含"Widget"的文件=]A、BC.
    • 只修改扩展名为"properties".
    • 的打开文件

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

Failing that, is there any stand-alone Java refactoring tool which offers it?

推荐软件在这里特别离题,尽管在一些封闭式问题中已经提出了这个问题。 (参见 What topics can I ask about here?