«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Освоение закрытых классов в Java

Освоение закрытых классов в Java

Опубликовано 7 августа 2024 г.
Просматривать:986

Mastering Sealed Classes in Java

Запечатанные классы, представленные в Java 15 в качестве предварительной функции и ставшие постоянными в Java 17, позволяют разработчикам контролировать, какие классы могут расширять или реализовывать их. Эта функция является частью проекта Amber, целью которого является повышение производительности труда разработчиков за счет расширения языка Java небольшими, но мощными функциями.

Что такое запечатанные классы?

Запечатанные классы — это новый вид классов, который ограничивает то, какие другие классы или интерфейсы могут их расширять или реализовывать. Это сделано для обеспечения более надежной и удобной в обслуживании иерархии типов. Когда вы определяете запечатанный класс, вы указываете набор разрешенных подклассов.

Преимущества запечатанных классов

  1. Контролируемое наследование: Указав, какие классы могут расширять запечатанный класс, вы получаете лучший контроль над иерархией классов и гарантируете, что она останется четко определенной и простой в обслуживании.
  2. Исчерпывающее сопоставление с образцом: Запечатанные классы хорошо работают с функциями сопоставления с образцом, позволяя компилятору проверить, что все возможные случаи охвачены.
  3. Повышенная читаемость и удобство сопровождения: четко определенные структуры наследования улучшают читаемость и удобство сопровождения кода.

Определение запечатанного класса

Чтобы определить запечатанный класс, вы используете ключевое слово запечатанный и указываете разрешенные подклассы с помощью предложения разрешений. Вот пример:

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.

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/adaumircosta/mastering-sealed-classes-in-java-3md?1. Если есть какие-либо нарушения, свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3