Почему JEP 441 ослабил проверку доминирования защищенных шаблонов по сравнению с JEP 420?JAVA

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

Сообщение Anonymous »

Этот вопрос касается разницы между различными JEP для «Сопоставления шаблонов для коммутатора»
В JEP 420 (вторая предварительная версия, Java 18–20) условия в защищенные шаблоны слегка проверяются на правильный порядок доминирования:

Проверка доминирования теперь приводит к тому, что метка постоянного регистра появляется перед защищенным шаблоном того же типа.


Компилятор проверяет все метки шаблонов. Если метка шаблона в блоке переключателей доминирует над меткой более раннего шаблона в этом блоке переключателей, это ошибка времени компиляции.

В JEP 441 ( релиз, Java 21), эта проверка удалена.
Итак, хотя это вызывает (действительную) ошибку компилятора в Java (18 с использованием &&), 19 и 20:

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

static void dominanceExampleWithConstant(Object obj) {
switch (obj.toString()) {
case String str when str.length() > 5 -> System.out.println(str);
case "Sophie" -> System.out.println("My lovely daughter");
//   ^^^^^^^ Dominated by the preceding case label //
default -> System.out.println("FALLBACK");
}
}
в Java 21 этого больше нет.
Мой вопрос

Почему была удалена эта проверка компилятора?

Я не могу найти объяснения в JEP. Был ли официальный комментарий?

Подробнее здесь: https://stackoverflow.com/questions/791 ... ared-to-je
Ответить

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

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

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

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

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