Java 开关用例

扫码查看

我不太情愿用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/

10-11 22:25
查看更多