如何使用新的Java 14 Switch表达式将switch case声明为默认值?
我只需要:
我只需要:
enum States {
PLAY, STOP
}
...
States state = ...
switch (state) {
case PLAY -> { run(); }
case STOP, default -> { stop(); }
}
无法编译。Java 17 Preview 特性可以编译,但这不是解决方案!我真的想避免使用未完成的特性。
它应该等同于旧式的 switch 语句:
switch (state) {
case PLAY: run(); break;
case STOP: // <-- No extra "break;". Intentional fall-through!
default: stop(); break;
}
在纯Java 14(或者也许是17)中是否可能实现这一点?
STOP
的行为与default
相同,那么只需省略STOP
case,它就会成为默认的一部分。 - khelwooddefault ->
,因为你想要“尽可能明确地提到它”,为什么不列出所有剩余的情况并省略default
?哦,我明白了,你编辑了问题并添加了定义。所以,根本没有理由使用default
。只需使用switch (state) { case PLAY -> run(); case STOP -> stop(); }
或者,如果你考虑到枚举类型的潜在修改:switch (state) { case PLAY -> run(); case STOP -> stop(); default -> throw new AssertionError(); }
- Holger