Heim  >  Artikel  >  Java  >  Beherrschen versiegelter Klassen in Java

Beherrschen versiegelter Klassen in Java

WBOY
WBOYOriginal
2024-07-26 07:43:33345Durchsuche

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.

Das obige ist der detaillierte Inhalt vonBeherrschen versiegelter Klassen in Java. 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
Vorheriger Artikel:ArraysNächster Artikel:Arrays