返回

开关,随心所欲,Java14中switch表达式的优化让代码更优美

后端

人们热议Java14 switch表达式的增强,这一新特性可谓是惊艳亮相。传统的switch语句通常需要大量的break语句来控制流向,这使得代码冗长且难以维护。而switch表达式则不同,它允许使用switch来替代复杂的if-else语句,并避免编写大量的break语句,使代码更加简洁易懂。

让我们来看一个简单的例子:

if (flag == 1) {
    log.info("didispace.com: 1");
} else if (flag == 2) {
    log.info("didispace.com: 2");
} else if (flag == 3) {
    log.info("didispace.com: 3");
}

这段代码可以用switch表达式重写如下:

String message = switch (flag) {
    case 1 -> "didispace.com: 1";
    case 2 -> "didispace.com: 2";
    case 3 -> "didispace.com: 3";
    default -> "Invalid flag value";
};

log.info(message);

是不是简洁了很多呢?而且再也不用担心忘记写break语句了。

switch表达式不仅可以用于简单的情况,还可以用于更复杂的情况。例如,可以使用switch表达式来替代复杂的if-else-if-else链:

if (age >= 18) {
    if (age < 65) {
        log.info("Adult");
    } else {
        log.info("Senior");
    }
} else {
    log.info("Child");
}

这段代码可以用switch表达式重写如下:

String category = switch (age) {
    case 18, 19, 20, ..., 64 -> "Adult";
    case 65, 66, 67, ..., 120 -> "Senior";
    default -> "Child";
};

log.info(category);

switch表达式还支持模式匹配,这使得它可以用于更加灵活的场景。例如,可以使用switch表达式来匹配字符串:

String result = switch (input) {
    case "a", "e", "i", "o", "u" -> "vowel";
    case "b", "c", "d", "f", "g", "h", "j", "k", "l", "m", "n", "p", "q", "r", "s", "t", "v", "w", "x", "y", "z" -> "consonant";
    default -> "invalid input";
};

log.info(result);

switch表达式是Java 14中的一项重要新特性,它使代码更加简洁易懂。如果你还没有尝试过switch表达式,我强烈建议你尝试一下。