Запечатанные классы, представленные в Java 15 в качестве предварительной функции и ставшие постоянными в Java 17, позволяют разработчикам контролировать, какие классы могут расширять или реализовывать их. Эта функция является частью проекта Amber, целью которого является повышение производительности труда разработчиков за счет расширения языка Java небольшими, но мощными функциями.
Запечатанные классы — это новый вид классов, который ограничивает то, какие другие классы или интерфейсы могут их расширять или реализовывать. Это сделано для обеспечения более надежной и удобной в обслуживании иерархии типов. Когда вы определяете запечатанный класс, вы указываете набор разрешенных подклассов.
Чтобы определить запечатанный класс, вы используете ключевое слово запечатанный и указываете разрешенные подклассы с помощью предложения разрешений. Вот пример:
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 }
В этом примере Shape является запечатанным классом, и только Circle, Rectangle и Square могут его расширять. Каждый подкласс должен быть финальным, запечатанным или незапечатанным.
Запечатанные классы можно использовать для моделирования иерархических структур, в которых набор подклассов известен и фиксирован. Это особенно полезно при моделировании предметной области и при работе с алгебраическими типами данных.
Вот пример использования запечатанных классов с сопоставлением с образцом:
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); } }
В этом примере мы используем выражение переключения для обработки различных типов фигур. Компилятор может гарантировать, что будут охвачены все возможные случаи, поскольку форма запечатана.
Запечатанные классы — это мощное дополнение к Java, обеспечивающее лучший контроль над иерархией классов, а также улучшающее читаемость и удобство обслуживания кода. Используя запечатанные классы, вы можете создавать более надежные и четко определенные системы типов в ваших приложениях Java.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3