首頁  >  文章  >  Java  >  Java 21 中 Switch 的模式匹配

Java 21 中 Switch 的模式匹配

王林
王林原創
2024-07-19 00:46:41293瀏覽

Pattern Matching for Switch in Java 21

模式匹配總是 Java 中備受期待的功能,它為該語言帶來了更多的功能和靈活性。 Java 21 引入了 switch 語句的模式匹配,這簡化了程式碼並減少了樣板檔案。讓我們來探討一下這個新功能的工作原理以及它的好處。

什麼是 Switch 的模式匹配?

switch 的模式匹配可讓您將值與模式進行匹配,使程式碼更具表現力和可讀性。現在您可以編寫更簡潔且可維護的程式碼,而不是使用多個 if-else 語句或複雜的 switch case。

交換器模式匹配的好處

  • 可讀性:讓程式碼更易於閱讀和理解。
  • 簡潔:減少樣板程式碼量。
  • 型別安全:在編譯時提供更好的型別檢查。

如何使用 Switch 的模式匹配

這是一個簡單的範例來說明 switch 的模式匹配如何運作:

static String formatterPatternSwitch(Object obj) {
    return switch (obj) {
        case Integer i -> String.format("int %d", i);
        case Long l    -> String.format("long %d", l);
        case Double d  -> String.format("double %f", d);
        case String s  -> String.format("String %s", s);
        default        -> obj.toString();
    };
}

在此範例中,formatterPatternSwitch 接受一個物件並根據其類型傳回一個格式化字串。以下是所發生事件的詳細說明:

  1. 開關表達式:開關表達式採用 obj 並將其與不同的模式進行匹配。
  2. 案例模式:每種情況指定一個要匹配的模式:
    • Integer i:如果 obj 是 Integer 的實例,則符合並將值綁定到 i。
    • Long l:如果 obj 是 Long 的實例,則匹配並將值綁定到 l。
    • Double d:如果 obj 是 Double 的實例,則符合並將該值綁定到 d。
    • String s:如果 obj 是 String 的實例,則符合並將值綁定到 s。
  3. 預設情況:預設情況處理任何與指定模式不符的值,並使用 obj.toString() 將它們轉換為字串。

讓我給出詳細的範例案例:處理不同的形狀

考慮一個場景,您需要處理不同的形狀並計算它們的面積。以下是 switch 的模式匹配如何簡化程式碼:

abstract sealed class Shape permits Circle, Square, Rectangle {}

final class Circle extends Shape {
    double radius;
    Circle(double radius) { this.radius = radius; }
}

final class Square extends Shape {
    double side;
    Square(double side) { this.side = side; }
}

final class Rectangle extends Shape {
    double length, width;
    Rectangle(double length, double width) { this.length = length; this.width = width; }
}

static double calculateArea(Shape shape) {
    return switch (shape) {
        case Circle c -> Math.PI * c.radius * c.radius;
        case Square s -> s.side * s.side;
        case Rectangle r -> r.length * r.width;
    };
}

在此範例中:

  1. 密封類:Shape是密封類,只有CircleSquareRectangle可以擴充它。
  2. 開關表達式:calculateArea 方法使用開關表達式來決定 shape 的類型併計算其面積。
  3. 案例模式:每種案例都符合特定的形狀類型並執行相應的面積計算:
    • Circle c:如果shapeCircle 則匹配並將其綁定到c,使用c.radius 計算面積
    • Square s:如果shapeSquare 則匹配並將其綁定到s,使用s.side 計算面積
    • 矩形r:如果shape矩形 則匹配並將其綁定到r,使用r.length 計算面積r.width.

結論

Java 21 中 switch 的模式匹配是一項強大的功能,可增強程式碼的可讀性、簡潔性和類型安全性。透過讓您直接在 switch 語句中將值與模式進行匹配,它簡化了許多常見的編碼任務。 Java 開發人員絕對應該探索並採用此功能來編寫更乾淨、更易於維護的程式碼。

請隨意修改或擴充此部分以滿足您的需求!

以上是Java 21 中 Switch 的模式匹配的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn