Java 15 introduced a new feature called Sealed Classes, which allows developers to restrict the types that can extend a class or implement an interface. This feature is designed to improve code safety and maintainability by enforcing a set of rules that limit the hierarchy of classes and interfaces.
In this blog article, we will explore what Sealed Classes are, how they work, and how to use them in your Java applications.
What are Sealed Classes?
Sealed Classes are a new feature in Java 15 that allow developers to restrict the types that can extend a class or implement an interface. This is done by adding a new keyword sealed
to the class or interface declaration, followed by a list of permitted subclasses or implementors.
Sealed Classes enforce a set of rules that limit the hierarchy of classes and interfaces, making it easier to maintain and modify the code over time. This feature is especially useful when working with complex systems that require a high level of abstraction and modularity.
How Sealed Classes Work
Sealed Classes work by allowing the developer to specify a set of rules that limit the types that can extend a class or implement an interface. This is done using the sealed
keyword in the class or interface declaration, followed by a list of permitted subclasses or implementors.
Here’s an example of how a sealed class might look:
public sealed class Shape permits Circle, Rectangle, Triangle {
// Class definition goes here...
}
In this example, Shape
is declared as a sealed class, which means that it can only be extended by the classes listed in the permits
clause. In this case, Circle
, Rectangle
, and Triangle
are the only permitted subclasses of Shape
.
To create a subclass of a sealed class, the subclass must meet one of the following criteria:
- The subclass is listed in the
permits
clause of the sealed class - The subclass is a final class
- The subclass is a non-sealed class that extends a permitted subclass of the sealed class
Here’s an example of how a subclass of a sealed class might look:
public final class Circle extends Shape {
// Class definition goes here...
}
In this example, Circle
is a final class that extends Shape
, which is a permitted subclass of the sealed class.
Benefits of Sealed Classes
Sealed Classes provide several benefits over traditional class hierarchies. These include:
- Improved code safety: Sealed Classes allow developers to restrict the types that can extend a class or implement an interface, which can reduce the risk of errors and bugs in the code.
- Easier maintenance: Sealed Classes limit the hierarchy of classes and interfaces, making it easier to maintain and modify the code over time.
- Increased abstraction: Sealed Classes provide a high level of abstraction, which can make it easier to reason about the code and understand its structure.
Conclusion
Sealed Classes are a new feature in Java 15 that allow developers to restrict the types that can extend a class or implement an interface. This feature improves code safety and maintainability by enforcing a set of rules that limit the hierarchy of classes and interfaces.
With Sealed Classes, developers can create more modular and maintainable code, which can reduce the risk of errors and bugs in the code. By providing a high level of abstraction and limiting the hierarchy of classes and interfaces, Sealed Classes make it easier to reason about the code and understand its structure.