Когда будет вызываться случай по умолчанию в переключателе для закрытой иерархииJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Когда будет вызываться случай по умолчанию в переключателе для закрытой иерархии

Сообщение Anonymous »

Учитывая закрытую иерархию, как показано ниже

Код: Выделить всё

sealed interface Shape permits Rectangle, Square

record Rectangle() implements Shape

record Square() implements Shape
Поскольку прямоугольник и квадрат являются записями, это по своей сути делает всю иерархию нерасширяемой, т. е. больше не допускается создание подклассов.
Начиная с JDK 21, сопоставление шаблонов для переключателя обеспечивает исчерпывающий выбор либо путем охвата всех возможных случаев, либо путем предоставления варианта по умолчанию для покрытия остальных. >
Итак, для приведенного ниже переключателя при каких обстоятельствах будет выполняться вариант по умолчанию, поскольку охватываются все возможные комбинации, и почему это вообще разрешено?

Код: Выделить всё

switch (shape) {
case Rectangle r -> // do something with r;
case Square sq -> // do something with sq;
case null -> // shape could be null
default -> // WHY is this permitted when all possible cases are covered already??
}
P.S.: Запечатанная иерархия определенно может развиваться, но когда это произойдет, компилятор автоматически пометит переключатель, чтобы обновить себя.

Подробнее здесь: https://stackoverflow.com/questions/774 ... be-invoked
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»