我不太情愿用switch,但是我看到了switch will be improved in Java 12
我发现(在 Java 12 之前) switch 可能有用的唯一用例是从一个小的封闭案例集返回不同的值,例如:
switch (input) {
case "A":
return "1";
case "B":
return "2";
default:
return "0";
}
或者在 Java 12 示例中:
但是我发现了一个旧的但排名很高的 answer 说要避免多个 return 语句:
所以我想知道,由于开关更改,该答案是否仍然相关?
我是否必须等待 Java 12 才能在没有临时变量和中断的情况下使用 switch?
最佳答案
我不知道什么时候它被认为是一种好的做法。对我来说,switch
通常是*一个设计错误的指标。我宁愿把精力放在思考如何避免切换上,而不是想知道如何从切换中返回一个值。
几个例子
Long list of if statements in Java
How to avoid switch-case statements in Java
Converting many 'if else' statements to a cleaner approach
对于具有大量 break
的方法也是如此——如果您选择“局部变量方法”,这就是您要做的。
在我看来,这些都不是
// 1
switch (input) {
case "A":
return "1";
case "B":
return "2";
default:
return "0";
}
// 2
String varibleToReturn = null;
switch (input) {
case "A":
varibleToReturn = "1";
break;
case "B":
varibleToReturn = "2";
break;
default:
varibleToReturn = "0";
}
return varibleToReturn;
// 3
return switch(digitInDecimal) {
case 0 -> '0';
case 1 -> '1';
case 2 -> '2';
default -> '?';
}
有显着差异,或略有改善。是的,Java-12 的切换会提供更多的简洁性和表现力,但基本思想保持不变。
这是什么意思? :) 不,截止日期是明天,你必须处理你现在手头的东西。
*我并没有低估 switch 的用处。例如,当您在低级编程或编写优化时,它可能会派上用场。
我只是说在现实世界中,有 Springs 和 Hibernates,在模式世界中,switch 已经过时了。
关于Java 开关用例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57347001/