JDK 14の新機能-Switch新機能

6378 ワード

2020年3月17日、OracleはJDK 14バージョンを正式にリリースし、16の新しい機能を追加しました.
    本文は重点的にswitchの新しい機能について書きます:
     switch式は、switch文を拡張し、文(statement)としてだけでなく、式(expression)としても使用できます.また、両方の書き方で従来のswitch構文を使用するか、簡略化されたcase L->モードマッチング構文を使用して、異なる範囲で実行フローを制御できます.
JDK 14以前のswitch表記:
public class SwitchTest {
    public static void main(String[] args) {
        Weekday day = Weekday.MON; //         
        //case L:        
        switch (day){
            case MON:
            case TUE:
            case WEN:
                String s = ""; //               switch           :    
                System.out.println("   ");
                break;
            case THU:
            case FRI:
                String s = ""; //      
                System.out.println("   ");
            case SAT:
            case SUN:
                System.out.println("  ");
        }
        System.out.println("12");


}
//    
enum Weekday{
    MON,TUE,WEN,THU,FRI,SAT,SUN
}

   
12
        break   case  
 
1.case L ->           case                  
    
public class SwitchTest {
    public static void main(String[] args) {
        Weekday day = Weekday.MON; //         
        //case L:        
        switch (day){//   break;
            case MON, TUE, WEN -> {
                System.out.println("   ");
                String s = "abc"; //             
            }
            case THU, FRI      -> {
                System.out.println("   ");
                String s = "def";
            }
            case SAT, SUN      -> {
                System.out.println("  ");
            }
        }
        System.out.println("12");
}

//    
enum Weekday{
    MON,TUE,WEN,THU,FRI,SAT,SUN
}
   
12
 
 
2.JDK14    switch                
 
public class SwitchTest {
    public static void main(String[] args) {
        Weekday day = Weekday.MON; //         

        //JDK14    switch       
        //          
        System.out.println(switch(day){
            case MON, TUE, WEN -> "   ";
            case THU, FRI      -> "   ";
            case SAT, SUN      -> "  ";
        });

        //             
        String text = switch(day){
            case MON, TUE, WEN -> "   ";
            case THU, FRI      -> "   ";
            case SAT, SUN      -> "  ";
        };

        //  yield       
        day = Weekday.SAT;
        int x = switch(day){
            case MON, TUE, WEN -> 1;
            case THU, FRI      -> 2;
            case SAT, SUN      -> {
                int rnd = (int)(Math.random()*10);  //    (0,10)      
                System.out.println("rnd = " + rnd);
                yield rnd;  //  yield       
            };
        };

        System.out.println("x = " + x);
    }
}

//    
enum Weekday{
    MON,TUE,WEN,THU,FRI,SAT,SUN
}