Heim >Java >javaLernprogramm >Mustervergleich für Switch in Java 21

Mustervergleich für Switch in Java 21

王林
王林Original
2024-07-19 00:46:41397Durchsuche

Pattern Matching for Switch in Java 21

Der Mustervergleich ist eine mit Spannung erwartete Funktion in Java, die der Sprache mehr Leistungsfähigkeit und Flexibilität verleiht. Java 21 führt den Mustervergleich für Switch-Anweisungen ein, was den Code vereinfacht und den Boilerplate reduziert. Lassen Sie uns untersuchen, wie diese neue Funktion funktioniert und warum sie nützlich ist.

Was ist Pattern Matching für Switch?

Der Mustervergleich für Schalter ermöglicht es Ihnen, einen Wert mit Mustern abzugleichen, wodurch der Code ausdrucksvoller und lesbarer wird. Anstatt mehrere if-else-Anweisungen oder komplexe Switch-Fälle zu verwenden, können Sie jetzt prägnanteren und wartbareren Code schreiben.

Vorteile des Mustervergleichs für Switch

  • Lesbarkeit: Erleichtert das Lesen und Verstehen des Codes.
  • Prägnanz: Reduziert die Menge an Boilerplate-Code.
  • Typsicherheit: Bietet eine bessere Typprüfung zur Kompilierungszeit.

So verwenden Sie den Mustervergleich für Switch

Hier ist ein einfaches Beispiel, um zu veranschaulichen, wie der Mustervergleich für Schalter funktioniert:

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();
    };
}

In diesem Beispiel nimmt formatterPatternSwitch ein Objekt und gibt eine formatierte Zeichenfolge basierend auf seinem Typ zurück. Hier ist eine Aufschlüsselung dessen, was passiert:

  1. Switch-Ausdruck: Der Switch-Ausdruck nimmt das Objekt und gleicht es mit verschiedenen Mustern ab.
  2. Fallmuster: Jeder Fall gibt ein passendes Muster an:
    • Integer i: Entspricht, wenn obj eine Instanz von Integer ist, und bindet den Wert an i.
    • Long l: Trifft zu, wenn obj eine Instanz von Long ist, und bindet den Wert an l.
    • Double d: Entspricht, wenn obj eine Instanz von Double ist, und bindet den Wert an d.
    • String s: Entspricht, wenn obj eine Instanz von String ist, und bindet den Wert an s.
  3. Standardfall: Der Standardfall behandelt alle Werte, die nicht mit den angegebenen Mustern übereinstimmen, und wandelt sie mit obj.toString() in einen String um.

Lassen Sie mich einen detaillierten Beispielfall geben: Umgang mit verschiedenen Formen

Stellen Sie sich ein Szenario vor, in dem Sie verschiedene Formen verarbeiten und deren Flächen berechnen müssen. So kann der Mustervergleich für Schalter den Code vereinfachen:

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;
    };
}

In diesem Beispiel:

  1. Versiegelte Klassen: Form ist eine versiegelte Klasse und kann nur durch Kreis, Quadrat und Rechteck erweitert werden.
  2. Schalterausdruck: Die Methode calculateArea verwendet einen Schalterausdruck, um den Typ der Form zu bestimmen und deren Fläche zu berechnen.
  3. Fallmuster: Jeder Fall entspricht einem bestimmten Formtyp und führt die entsprechende Flächenberechnung durch:
    • Kreis c: Entspricht, wenn Form ein Kreis ist, und bindet ihn an c. Anschließend wird die Fläche mithilfe von c.radius berechnet
    • Square s: Entspricht, wenn shape ein Square ist, und bindet es an s. Anschließend wird die Fläche mithilfe von s.side berechnet
    • Rectangle r: Entspricht, wenn shape ein Rectangle ist, und bindet es an r. Anschließend wird die Fläche mithilfe von r.length berechnet und r.width.

Abschluss

Der Mustervergleich für Switch in Java 21 ist eine leistungsstarke Funktion, die die Lesbarkeit, Prägnanz und Typsicherheit des Codes verbessert. Dadurch, dass Sie Werte direkt in Switch-Anweisungen mit Mustern abgleichen können, werden viele gängige Codierungsaufgaben vereinfacht. Java-Entwickler sollten diese Funktion unbedingt erkunden und übernehmen, um saubereren und wartbareren Code zu schreiben.

Fühlen Sie sich frei, diesen Abschnitt an Ihre Bedürfnisse anzupassen oder zu erweitern!

Das obige ist der detaillierte Inhalt vonMustervergleich für Switch in Java 21. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn