BOOKJAVA Telegram 3952
Sealed Classes.

Sealed Classes — контроль наследования в Java 🔒

Одна из самых недооценённых фич Java 17 — sealed классы.
Если коротко: теперь ты можешь жёстко контролировать, кто именно может наследоваться от твоего класса.

До Java 17 🤯

Представь, у тебя есть базовый класс:


abstract class Shape {}


И куча наследников кто во что горазд:
Circle, Rectangle, Triangle, StarShape, ShapeFromLegacyLib...
А потом в коде появляются неожиданные "левые" реализации, и поддержка превращается в ад.


В Java 17 пришло спасение 🦸


public sealed abstract class Shape
permits Circle, Rectangle, Triangle {}


Теперь только указанные классы могут наследовать Shape.
Больше никаких сюрпризов из сторонних либ или неосторожных рук джуна.


Варианты модификаторов 🛠️

У наследников есть три опции:

1. final — дальше наследовать нельзя.


public final class Circle extends Shape {}


2. sealed — продолжаем ограничивать список наследников.


public sealed class Rectangle extends Shape
permits Square {}


3. non-sealed — снимаем ограничения, и от этого класса можно наследоваться свободно.


public non-sealed class Triangle extends Shape {}



Зачем это вообще? 🤔

Чёткий контроль иерархии (никакой анархии).
Более безопасный switch с pattern matching: компилятор проверяет, что ты обработал все варианты.
Понятный контракт: сразу видно, какие подтипы есть.


Пример использования с switch 💡


static String print(Shape shape) {
return switch (shape) {
case Circle c -> "Круг";
case Rectangle r -> "Прямоугольник";
case Triangle t -> "Треугольник";
};
}


И всё!
Если ты забыл какой-то подтип, компилятор не даст собрать проект 🚨.


Итог ⚡️

- Sealed Classes = контроль + безопасность + читаемость.
- В паре с Pattern Matching в switch это превращается в почти алгебраические типы данных (как в Kotlin или Scala).
- Если у тебя чётко ограниченный набор сущностей — sealed классы must-have.

👉 @BookJava
👍81



tgoop.com/BookJava/3952
Create:
Last Update:

Sealed Classes.

Sealed Classes — контроль наследования в Java 🔒

Одна из самых недооценённых фич Java 17 — sealed классы.
Если коротко: теперь ты можешь жёстко контролировать, кто именно может наследоваться от твоего класса.

До Java 17 🤯

Представь, у тебя есть базовый класс:


abstract class Shape {}


И куча наследников кто во что горазд:
Circle, Rectangle, Triangle, StarShape, ShapeFromLegacyLib...
А потом в коде появляются неожиданные "левые" реализации, и поддержка превращается в ад.


В Java 17 пришло спасение 🦸


public sealed abstract class Shape
permits Circle, Rectangle, Triangle {}


Теперь только указанные классы могут наследовать Shape.
Больше никаких сюрпризов из сторонних либ или неосторожных рук джуна.


Варианты модификаторов 🛠️

У наследников есть три опции:

1. final — дальше наследовать нельзя.


public final class Circle extends Shape {}


2. sealed — продолжаем ограничивать список наследников.


public sealed class Rectangle extends Shape
permits Square {}


3. non-sealed — снимаем ограничения, и от этого класса можно наследоваться свободно.


public non-sealed class Triangle extends Shape {}



Зачем это вообще? 🤔

Чёткий контроль иерархии (никакой анархии).
Более безопасный switch с pattern matching: компилятор проверяет, что ты обработал все варианты.
Понятный контракт: сразу видно, какие подтипы есть.


Пример использования с switch 💡


static String print(Shape shape) {
return switch (shape) {
case Circle c -> "Круг";
case Rectangle r -> "Прямоугольник";
case Triangle t -> "Треугольник";
};
}


И всё!
Если ты забыл какой-то подтип, компилятор не даст собрать проект 🚨.


Итог ⚡️

- Sealed Classes = контроль + безопасность + читаемость.
- В паре с Pattern Matching в switch это превращается в почти алгебраические типы данных (как в Kotlin или Scala).
- Если у тебя чётко ограниченный набор сущностей — sealed классы must-have.

👉 @BookJava

BY Библиотека Java разработчика


Share with your friend now:
tgoop.com/BookJava/3952

View MORE
Open in Telegram


Telegram News

Date: |

Your posting frequency depends on the topic of your channel. If you have a news channel, it’s OK to publish new content every day (or even every hour). For other industries, stick with 2-3 large posts a week. With the administration mulling over limiting access to doxxing groups, a prominent Telegram doxxing group apparently went on a "revenge spree." bank east asia october 20 kowloon Telegram desktop app: In the upper left corner, click the Menu icon (the one with three lines). Select “New Channel” from the drop-down menu. 4How to customize a Telegram channel?
from us


Telegram Библиотека Java разработчика
FROM American