【发布时间】:2018-06-27 20:52:48
【问题描述】:
鉴于我有一个“空”界面:
public interface Color {
}
还有一个实现上述接口的枚举类:
public enum Fruits implements Color {
APPLE,
APRICOT,
AVOCADO,
BANANA,
BLACKBERRY,
BLUEBERRY,
CHERRY,
COCONUT,
CRANBERRY,
DATE,
DURIAN,
ELDERBERRY,
FIG,
JACKFRUIT,
KIWI,
LEMON,
LIME,
LYCHEE,
MANGO,
MELLON,
ORANGE,
PAPAYA,
PASSION_FRUIT,
PEAR,
PLUM,
PINEAPPLE,
POMELO
}
编码了一阵子,回到那个界面,添加了一个方法,比如:
public interface Color {
Color getColor();
}
IntelliJ Idea 肯定会告诉我每个枚举值都应该实现新添加的方法。我现在可以做的是跳转到每个枚举值(使用 F2 作为跳转到每个值的快捷方式),然后使用 ALT + ENTER 创建它的默认实现。
APPLE {
@Override
public Color getColor() {
return null;
}
},
APRICOT {
@Override
public Color getColor() {
return null;
}
},
AVOCADO {
@Override
public Color getColor() {
return null;
}
},
...
一旦我意识到实现这个接口的不仅仅是这个枚举,这很快就会失控。
澄清
我正在 IntelliJ Idea 中搜索 键盘快捷键,这是一个提供代码生成功能的 IDE一次创建每个枚举值的空方法树桩。
IntelliJ Idea 确实为每个单独的枚举值分别提供了这样的功能,这让我想到了一个问题:可以一次为所有值完成吗?
【问题讨论】:
-
你有一个 whole 很多重复,看起来某种重构或参数化会使事情变得更清晰。
-
看起来可能是这样。请理解上面的例子来解释手头的问题,仅此而已。
-
我的意思是你的枚举值往往是重复的——你明确地列出了看起来像一些笛卡尔积的东西。这通常不是最好的方法。
-
如果我换成不同种类的水果,你会回答这个问题吗?
-
@JohnSmith 在your original question 中,没有任何迹象表明您正在 IntelliJ IDEA 中寻找键盘快捷键。问题的核心是难道没有更短的方法来实现这一点,让我们一次为每个枚举值创建默认方法吗? 我们回答了这个问题。如果您认为这种解释是错误的或不是强制性的,请再想一想。至少有 3 名高级用户以这种方式解释了您的问题,因此很有可能是您的问题存在问题,而不是我们。
标签: java intellij-idea