美文网首页简友广场
Java 12 switch 的特色

Java 12 switch 的特色

作者: coder_girl | 来源:发表于2019-08-21 15:49 被阅读0次

    Java 12 switch 有以下几点特色:

    箭头语法 ->,类似 Java 8 中的 Lambda 表达式;
    可以直接返回值给一个变量,并且可以不用 break 关键字;
    case 条件,多个可以写在一行,用逗号分开;
    可以省略 break 关键字;

    那么在 Java 12 中可以怎样玩 switch?

    先来定义一个枚举类:

    public enum Status {
    OPEN, INIT, PROCESS, PENDING, CLOSE;
    }
    Java 12 之前是这样用的:

    private static void testSwitch1(Status status) {
    int result = 0;
    switch (status) {
    case OPEN:
    result = 1;
    break;
    case PROCESS:
    result = 2;
    break;
    case PENDING:
    result = 2;
    break;
    case CLOSE:
    result = 3;
    break;
    default:
    throw new RuntimeException("状态不正确");
    }
    System.out.println("result is " + result);
    }
    Java 12 后可以这样用:

    private static void testSwitch2(Status status) {
    var result = switch (status) {
    case OPEN -> 1;
    case PROCESS, PENDING -> 2;
    case CLOSE -> 3;
    default -> throw new RuntimeException("状态不正确");
    };
    System.out.println("result is " + result);
    }
    示例代码看了都懂吧,是不是很骚?

    Java 12 switch 有以下几点特色:

    箭头语法 ->,类似 Java 8 中的 Lambda 表达式;
    可以直接返回值给一个变量,并且可以不用 break 关键字;
    case 条件,多个可以写在一行,用逗号分开;
    可以省略 break 关键字;
    当然你也可以使用 break 关键字,后面跟值:

    private static void testSwitch3(Status status) {
    var result = switch (status) {
    case OPEN -> {
    break 1;
    }
    case PROCESS, PENDING -> {
    break 2;
    }
    case CLOSE -> {
    break 3;
    }
    default -> {
    break 5;
    }
    };
    System.out.println("result is " + result);
    }
    不推荐用这种,在编译器也会显示灰色,并提示你更改。

    最后,这个新特性是 Java 12 预览版中的特性:JEP 325: Switch Expressions (Preview),要使用这个新特性,请切换至 Java 12 预览版。

    相关文章

      网友评论

        本文标题:Java 12 switch 的特色

        本文链接:https://www.haomeiwen.com/subject/ftabsctx.html