"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Dominar las clases selladas en Java

Dominar las clases selladas en Java

Publicado el 2024-08-07
Navegar:410

Mastering Sealed Classes in Java

Las clases selladas, introducidas en Java 15 como una característica de vista previa y permanentes en Java 17, permiten a los desarrolladores controlar qué clases pueden extenderlas o implementarlas. Esta función es parte del Proyecto Amber, cuyo objetivo es mejorar la productividad de los desarrolladores mejorando el lenguaje Java con funciones pequeñas pero potentes.

¿Qué son las clases selladas?

Las clases selladas son un nuevo tipo de clase que restringe qué otras clases o interfaces pueden extenderlas o implementarlas. Esto se hace para proporcionar una jerarquía de tipos más sólida y fácil de mantener. Cuando defines una clase sellada, especificas un conjunto de subclases permitidas.

Beneficios de las clases selladas

  1. Herencia controlada: al especificar qué clases pueden extender una clase sellada, obtienes un mejor control sobre tu jerarquía de clases y te aseguras de que permanezca bien definida y sea fácil de mantener.
  2. Coincidencia exhaustiva de patrones: las clases selladas funcionan bien con funciones de coincidencia de patrones, lo que permite al compilador verificar que todos los casos posibles estén cubiertos.
  3. Lectura y mantenimiento mejorados: las estructuras de herencia claramente definidas mejoran la legibilidad y el mantenimiento del código.

Definición de una clase sellada

Para definir una clase sellada, utiliza la palabra clave sellada y especifica las subclases permitidas con la cláusula de permisos. Aquí tienes un ejemplo:

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
}

En este ejemplo, Forma es una clase sellada y solo Círculo, Rectángulo y Cuadrado pueden extenderla. Cada subclase debe ser final, sellada o no sellada.

Usando clases selladas

Las clases selladas se pueden utilizar para modelar estructuras jerárquicas donde el conjunto de subclases es conocido y fijo. Esto es particularmente útil en el modelado de dominios y cuando se trabaja con tipos de datos algebraicos.

Aquí hay un ejemplo del uso de clases selladas con coincidencia de patrones:

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

En este ejemplo, usamos una expresión de cambio para manejar diferentes tipos de Forma. El compilador puede garantizar que todos los casos posibles estén cubiertos porque Shape está sellado.

Conclusión

Las clases selladas son una poderosa adición a Java, ya que brindan un mejor control sobre las jerarquías de clases y mejoran la legibilidad y el mantenimiento del código. Al utilizar clases selladas, puede crear sistemas de tipos más sólidos y mejor definidos en sus aplicaciones Java.

Declaración de liberación Este artículo se reproduce en: https://dev.to/adaumircosta/mastering-sealed-classes-in-java-3md?1 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3