Java 开关用例
Java switch use case
我舍不得用开关,但是我看到了switch will be improved in Java 12
Java 12 added the switch expression as an experimental feature. A Java switch expression is a switch statement which can return a value.
我发现(在 Java 12 之前)switch 可能有用的唯一用例是 return 从一组小的封闭案例中获取不同的值,例如:
switch (input) {
case "A":
return "1";
case "B":
return "2";
default:
return "0";
}
或者在Java12的例子中:
return
switch(digitInDecimal){
case 0 -> '0';
case 1 -> '1';
case 2 -> '2';
default -> '?';
但我发现了一个古老但排名靠前的 answer 说要避免多个 return 语句:
Assigning a value to a local variable and then returning that at the end is considered a good practice. Methods having multiple exits are harder to debug and can be difficult to read.
所以我想知道,由于开关更改,该答案是否仍然相关?
我必须等待 Java 12 switch 可以在没有临时变量和中断的情况下使用吗?
Assigning a value to a local variable and then returning that at the end is considered a good practice.
我不知道什么时候它被认为是一种好的做法。对我来说,switch
通常是 * 表明存在设计错误的指标。我宁愿把我的精力放在思考如何避免 switch 而不是想知道如何 return 来自 switch 的值。
几个例子
Long list of if statements in Java
Converting many 'if else' statements to a cleaner approach
Methods having multiple exits are harder to debug and can be difficult to read.
具有很多 break
的方法也是如此 - 如果您选择 "local-variable approach".
,这就是您要做的事情
在我看来,none 个
// 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 会更加简洁和表现力,但基本思想保持不变。
Must I wait for Java 12 where switch can be used without temporary variables and breaks?
这是什么意思? :) 不,截止日期是明天,你必须利用你现在手头的东西。
*我并没有低估switch的用处。它可能会派上用场,例如,当您在低级别编程或编写优化时。
我只是说在现实世界中,有了 Springs 和 Hibernates,在模式的世界里,switch 已经过时了.
我舍不得用开关,但是我看到了switch will be improved in Java 12
Java 12 added the switch expression as an experimental feature. A Java switch expression is a switch statement which can return a value.
我发现(在 Java 12 之前)switch 可能有用的唯一用例是 return 从一组小的封闭案例中获取不同的值,例如:
switch (input) {
case "A":
return "1";
case "B":
return "2";
default:
return "0";
}
或者在Java12的例子中:
return switch(digitInDecimal){ case 0 -> '0'; case 1 -> '1'; case 2 -> '2'; default -> '?';
但我发现了一个古老但排名靠前的 answer 说要避免多个 return 语句:
Assigning a value to a local variable and then returning that at the end is considered a good practice. Methods having multiple exits are harder to debug and can be difficult to read.
所以我想知道,由于开关更改,该答案是否仍然相关?
我必须等待 Java 12 switch 可以在没有临时变量和中断的情况下使用吗?
Assigning a value to a local variable and then returning that at the end is considered a good practice.
我不知道什么时候它被认为是一种好的做法。对我来说,switch
通常是 * 表明存在设计错误的指标。我宁愿把我的精力放在思考如何避免 switch 而不是想知道如何 return 来自 switch 的值。
几个例子
Long list of if statements in Java
Converting many 'if else' statements to a cleaner approach
Methods having multiple exits are harder to debug and can be difficult to read.
具有很多 break
的方法也是如此 - 如果您选择 "local-variable approach".
在我看来,none 个
// 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 会更加简洁和表现力,但基本思想保持不变。
Must I wait for Java 12 where switch can be used without temporary variables and breaks?
这是什么意思? :) 不,截止日期是明天,你必须利用你现在手头的东西。
*我并没有低估switch的用处。它可能会派上用场,例如,当您在低级别编程或编写优化时。
我只是说在现实世界中,有了 Springs 和 Hibernates,在模式的世界里,switch 已经过时了.