最近因为工作的关系,写了一段switch语句的业务代码。再者是前两天JDK12发布,便稍微看了一下,当时便看到了新特性中的switch表达式,所以便悄悄地尝了个鲜。
JDK12下载地址:https://www.oracle.com/technetwork/java/javase/downloads/index.html
JDK12带来的新特性
- 低暂停时间的GC:http://openjdk.java.net/jeps/189
- 微基准测试套件:http://openjdk.java.net/jeps/230
- Switch表达式:http://openjdk.java.net/jeps/325
- JVM常量API:http://openjdk.java.net/jeps/334
- 只保留一个AArch64实现:http://openjdk.java.net/jeps/340
- 默认类数据共享归档文件:http://openjdk.java.net/jeps/341
- 可中止的G1 Mixed GC:http://openjdk.java.net/jeps/344
- G1及时返回未使用的已分配内存:http://openjdk.java.net/jeps/346
Switch Expressions
Switch表达式就好比Java8中的Lambda表达式一样,真的是为开发者准备的新特性。下面就用官方的例子来说明一下。
现在的写法是
switch(day){
case MONDAY:
case FRIDAY:
case SUNDAY:
System.out.println(6);
break;
case TUESDAY:
System.out.println(7);
break;
case THURSDAY:
case SATURDAY:
System.out.println(8);
break;
case WEDNESDAY:
System.out.println(9);
break;
}
用Switch表达式来完成
switch (day) {
case MONDAY, FRIDAY, SUNDAY -> System.out.println(6);
case TUESDAY -> System.out.println(7);
case THURSDAY, SATURDAY -> System.out.println(8);
case WEDNESDAY -> System.out.println(9);
}
更加优雅的来完成
int numLetters = switch (day) {
case MONDAY, FRIDAY, SUNDAY -> 6;
case TUESDAY -> 7;
case THURSDAY, SATURDAY -> 8;
case WEDNESDAY -> 9;
};
不仅仅是Switch表达式,还有Java的一系列的新特性,为我们勾勒出了Java语法进化的一个趋势,将开发者从复杂繁琐的低层次抽象中逐渐解放出来,以更高层次更优雅的抽象,既降低代码量,又避免意外编程错误的出现,进而提高代码质量和开发效率。