【问题标题】:How do I re-factor references to static enum members如何重新考虑对静态枚举成员的引用
【发布时间】:2011-05-26 09:49:45
【问题描述】:

我的代码包含以下列方式对枚举的引用。

Flowers { ROSE, SUNFLOWER }

import com.mycompany.Flowers;

class A {
    public void foo(...) {
        Flowers flower = Flowers.ROSE;
    }
}

我希望上面的代码使用对 Flowers 的静态引用,然后代码看起来像

import static com.mycompany.Flowers.ROSE;

Flowers flower = ROSE;

如何重构我的代码(使用 Eclipse)以使用枚举的静态引用而不是正常的引用机制。有没有办法告诉 Eclipse 将所有常规枚举引用修改为静态引用?

【问题讨论】:

  • IntelliJ(免费版)中有,所以我想它也应该在 eclipse 中。如果可以的话,它很可能是一个自动修复。
  • 在 Flowers.ROSE 上按 Alt+Enter。
  • @Vladimir:Alt+ENTER?那是为了属性...?
  • 不管怎样,我认为过度使用静态导入并不是一个好主意。根据您使用它们的程度,它可能会增加编译器错误的可能性。 (假设你有 Color.ROSE 和 Flowers.ROSE)。当有更多逻辑时,混淆枚举会使阅读变得更加困难。这类似于实现一个常量接口(这是允许的,但不是常规的)。

标签: java eclipse keyboard-shortcuts


【解决方案1】:

这可能不像您要寻找的那样精通,但是在静态对象的引用上 Ctrl + Shift + M 会静态导入它(适用于成员和方法)...这样您就可以一个接一个地实现静态导入。

不过,我也对其他想法感兴趣

【讨论】:

  • 上述快捷方式工作正常,有没有办法在 eclipse 项目中的所有 java 文件中自动执行此操作。
  • 我有很多这样的常量,如果可能的话,我希望看到一个自动化的解决方案
  • @user339108,如果我真的想做这样的事情,我通常会编写一个简短的 perl 脚本来处理更改。
  • 感谢您的提示,但很想看看是否有其他方法可以实现这一目标。
  • 另一种解决方法是在 Eclipse 中为最常用的静态对象持有者定义收藏夹。这是一个很好的解决方案,如果您有一些枚举类,其中包含大量枚举和大量引用。另请参阅:stackoverflow.com/questions/288861/…
【解决方案2】:

只需在单词Rose 上按Ctrl + Shift + M,您就会看到它是静态导入的。

【讨论】:

  • 我的项目中有很多这样的参考资料(不仅仅是 NAME 参考资料)。我想知道是否有办法在所有此类引用中自动执行此操作
【解决方案3】:

您可以通过以下两个简单步骤来做到这一点:

  • 使用查找和替换可能会使用正则表达式将所有实例 Flowers.NAME 更改为仅 NAME
  • 然后像这样执行项目范围的“组织导入”:在包资源管理器中选择项目并按 Ctrl + Shift + O (与单类版本相同的击键)。应该为包裹等工作。鲍勃你的叔叔。 (来自this answer)。

【讨论】:

  • 我的项目中有很多这样的参考资料(不仅仅是 NAME 参考资料)。我想知道是否有办法在所有此类引用中做到这一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-09-21
  • 2014-06-01
  • 2022-12-17
  • 1970-01-01
  • 2021-08-16
  • 1970-01-01
  • 2014-02-17
相关资源
最近更新 更多