„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 > Beherrschen versiegelter Klassen in Java

Beherrschen versiegelter Klassen in Java

Veröffentlicht am 07.08.2024
Durchsuche:298

Mastering Sealed Classes in Java

Versiegelte Klassen, die in Java 15 als Vorschaufunktion eingeführt und in Java 17 dauerhaft gemacht wurden, ermöglichen Entwicklern die Kontrolle, welche Klassen sie erweitern oder implementieren können. Diese Funktion ist Teil des Projekts Amber, dessen Ziel es ist, die Entwicklerproduktivität zu verbessern, indem die Java-Sprache mit kleinen, aber leistungsstarken Funktionen erweitert wird.

Was sind versiegelte Klassen?

Versiegelte Klassen sind eine neue Art von Klasse, die einschränkt, welche anderen Klassen oder Schnittstellen sie erweitern oder implementieren können. Dies geschieht, um eine robustere und wartbarere Typhierarchie bereitzustellen. Wenn Sie eine versiegelte Klasse definieren, geben Sie eine Reihe zulässiger Unterklassen an.

Vorteile versiegelter Klassen

  1. Kontrollierte Vererbung: Durch die Angabe, welche Klassen eine versiegelte Klasse erweitern können, erhalten Sie eine bessere Kontrolle über Ihre Klassenhierarchie und stellen sicher, dass sie klar definiert und leicht zu warten bleibt.
  2. Umfassender Mustervergleich: Versiegelte Klassen funktionieren gut mit Mustervergleichsfunktionen, sodass der Compiler überprüfen kann, ob alle möglichen Fälle abgedeckt sind.
  3. Verbesserte Lesbarkeit und Wartbarkeit: Klar definierte Vererbungsstrukturen verbessern die Lesbarkeit und Wartbarkeit des Codes.

Definieren einer versiegelten Klasse

Um eine versiegelte Klasse zu definieren, verwenden Sie das Schlüsselwort „sealed“ und geben die zulässigen Unterklassen mit der Permits-Klausel an. Hier ist ein Beispiel:

public sealed class Shape permits Circle, Rectangle, Square {
    // class body
}

public final class Circle extends Shape {
    // class body
}

public final class Rectangle extends Shape {
    // class body
}

public final class Square extends Shape {
    // class body
}

In diesem Beispiel ist Shape eine versiegelte Klasse und nur Kreis, Rechteck und Quadrat dürfen sie erweitern. Jede Unterklasse muss final, versiegelt oder nicht versiegelt sein.

Verwendung versiegelter Klassen

Versiegelte Klassen können zur Modellierung hierarchischer Strukturen verwendet werden, bei denen die Menge der Unterklassen bekannt und festgelegt ist. Dies ist besonders nützlich bei der Domänenmodellierung und beim Arbeiten mit algebraischen Datentypen.

Hier ist ein Beispiel für die Verwendung versiegelter Klassen mit Mustervergleich:

public class SealedClassExample {
    public static void main(String[] args) {
        Shape shape = new Circle(5);

        String result = switch (shape) {
            case Circle c -> "Circle with radius "   c.radius();
            case Rectangle r -> "Rectangle with width "   r.width()   " and height "   r.height();
            case Square s -> "Square with side "   s.side();
        };

        System.out.println(result);
    }
}

In diesem Beispiel verwenden wir einen Schalterausdruck, um verschiedene Arten von Formen zu verarbeiten. Der Compiler kann sicherstellen, dass alle möglichen Fälle abgedeckt sind, da Shape versiegelt ist.

Abschluss

Versiegelte Klassen sind eine leistungsstarke Ergänzung zu Java, da sie eine bessere Kontrolle über Klassenhierarchien ermöglichen und die Lesbarkeit und Wartbarkeit des Codes verbessern. Durch die Verwendung versiegelter Klassen können Sie robustere und klarer definierte Typsysteme in Ihren Java-Anwendungen erstellen.

Freigabeerklärung Dieser Artikel ist abgedruckt unter: https://dev.to/adaumircosta/mastering-sealed-classes-in-java-3md?1 Bei Verstößen wenden Sie sich bitte an [email protected], um ihn zu 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