„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Entdecken Sie die Leistungsfähigkeit des Mustervergleichs mit Switch in Java 21

Entdecken Sie die Leistungsfähigkeit des Mustervergleichs mit Switch in Java 21

Veröffentlicht am 17.08.2024
Durchsuche:118

Exploring the Power of Pattern Matching with Switch in Java 21

Ein beliebter Anwendungsfall für den Mustervergleich mit Switch ist die Arbeit mit verschiedenen Datentypen in einem Programm. Betrachten Sie das folgende Beispiel einer WeatherStation-Klasse, die über verschiedene Arten von Sensoren verfügt und die aktuelle Temperatur zurückgibt:

`öffentliche Klasse WeatherStation {

private Sensor sensor;

 public double getCurrentTemperature() {
    return switch (sensor) {
        case TemperatureSensor t -> t.reading();
        case HumiditySensor h -> h.reading() * 0.9; // apply a 10% moisture correction
        default -> 0.0; // in case of an unhandled sensor type, return 0
    };
}

}
`
Hier sehen wir, dass eine Sensorschnittstelle für den Selektorausdruck verwendet wird und die Fallbeschriftungen Muster verwenden, die auf bestimmten Sensorimplementierungen basieren: TemperatureSensor und HumiditySensor. Dies ermöglicht eine präzisere und lesbarere Art und Weise, verschiedene Datentypen in der Switch-Anweisung zu verarbeiten.

Ein weiterer Anwendungsfall für den Mustervergleich mit Switch ist der Umgang mit Aufzählungen. Bevor der Mustervergleich eingeführt wurde, konnten Aufzählungen nur als Konstanten in Case-Beschriftungen verwendet werden, wodurch die Werte eingeschränkt wurden, anhand derer in einer Switch-Anweisung getestet werden konnte. Mit der neuen Funktion können Aufzählungen jetzt in Fallbezeichnungen qualifiziert werden, was einen präziseren und flexibleren Abgleich ermöglicht.

public enum Direction {
NORDEN,
OST,
SÜDEN,
WESTEN
}

öffentliche Leere bewegen(Richtung Richtung) {
wechseln (Richtung) {
case NORTH,NORTH_WEST,NORTH_EAST -> moveUp();
case EAST,EAST_NORTH,EAST_SOUTH -> moveRight();
case SOUTH,SOUTH_EAST,SOUTH_WEST -> moveDown();
case WEST,WEST_NORTH,WEST_SOUTH -> moveLeft();
}
}

Hier verwendet die Methode move() eine Switch-Anweisung, um Bewegungen in verschiedene Richtungen basierend auf dem angegebenen Direction-Enumerationswert einfach zu handhaben. Mit dem Mustervergleich können wir auch Richtungskombinationen wie NORTH_WEST und EAST_SOUTH angeben, wodurch unser Code robuster und flexibler wird.

Schauen wir uns abschließend ein Beispiel an, wie der Mustervergleich bei der Fehlerbehandlung in einer Switch-Anweisung helfen kann. Wenn beim herkömmlichen Switch der Selektorausdruck mit keiner der Fallbezeichnungen übereinstimmt, kann ein Standardfall zur Behandlung des Fehlers verwendet werden. Dies kann jedoch beim Umgang mit mehreren Fallbezeichnungen mühsam sein und zu Codeduplizierung führen. Beim Mustervergleich wird eine Ausnahme ausgelöst, wenn keines der Case-Label-Muster mit dem Selektorausdruck übereinstimmt, wodurch die Fehlerbehandlung einheitlicher und weniger fehleranfällig wird.

public String getPlanetaryObject(PlanetaryBody body) {
Rückschalter (Körper) {
case Planet p && p.getMass() > 1e29 -> p.getName() " ist ein Gasriese";
case Planet p && p.getMass() > 1e23 -> p.getName() " ist ein Gesteinsplanet";
case Star s && s.getLuminosity() > 1e32 -> s.getName() " ist ein heller Stern";
case Star s && s.getLuminosity() s.getName() " ist ein dunkler Stern";
default -> throw new MatchException("Typ des Planetenobjekts konnte nicht bestimmt werden: " body.getName());
};
}

In diesem Beispiel nimmt die Methode getPlanetaryObject() ein PlanetaryBody-Objekt auf, das entweder ein Planet oder ein Stern sein kann. Die in den Fallbeschriftungen verwendeten Muster berücksichtigen zusätzliche Bedingungen, wie etwa die Masse des Planeten oder die Leuchtkraft des Sterns. Wenn keines der Muster übereinstimmt, wird eine MatchException ausgelöst, wodurch die Fehlerbehandlung konsistenter wird und potenzielle Fehler verhindert werden.

Abschluss
Der Mustervergleich für Switch ist eine der wichtigsten Funktionen, die in jüngster Zeit in Java eingeführt wurden. Es ermöglicht flexiblere und prägnantere Kontrollflussstrukturen.

Verbessern Sie Ihre Java-Kenntnisse, indem Sie die Java SE 21 Professional Certified Developer-Zertifizierung absolvieren.

Freigabeerklärung Dieser Artikel ist abgedruckt unter: https://dev.to/myexamcloud/exploring-the-power-of-pattern-matching-with-switch-in-java-21-506a?1 Bei Verstößen wenden Sie sich bitte an Study_golang @163.com löschen
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3