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

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

Сообщение Anonymous »

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

Метка шаблона в форме регистра p доминирует над меткой шаблона в форме регистра p && e, т. е. где шаблон — это защищенная версия исходного шаблона. Например, случай метки шаблона String s доминирует над случаем метки шаблона String s && s.length() > 0, поскольку каждое значение, соответствующее защищенному шаблону String s && s.length() > 0, также соответствует шаблону String s.


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

В JEP 420 ( вторая предварительная версия, Java 18), эти проверки удалены:

Метка защищенного шаблона доминирует над константной меткой, если содержащаяся в ней метка доминирует; мы не проверяем защитное выражение, так как это вообще неразрешимо.

Итак, хотя это вызывает (действительную) ошибку компилятора в Java 17:

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

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");
default -> System.out.println("FALLBACK");
}
}
в Java 18 этого больше нет.
Мои вопросы:
  • Почему эта проверка компилятора была удалена?
  • Почему она была реализована вообще?
  • Привела ли версия Java 17 к случаям (ха-ха) в котором компилятор выдал "несправедливую" ошибку?
Я не могу найти объяснения в JEP. Был ли официальный комментарий?

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

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Почему JEP 420 ослабил проверку доминирования защищенных шаблонов по сравнению с JEP 406?
    Anonymous » » в форуме JAVA
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Почему JEP 441 ослабил проверку доминирования защищенных шаблонов по сравнению с JEP 420?
    Anonymous » » в форуме JAVA
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Понимание шаблонов деконструкции кода Java (JEP 405: шаблоны записей и шаблоны массивов)
    Anonymous » » в форуме JAVA
    0 Ответы
    35 Просмотры
    Последнее сообщение Anonymous
  • Веб-API ASP.NET в IIS Express: получение ошибки http 406 при работе в режиме отладки
    Anonymous » » в форуме C#
    0 Ответы
    46 Просмотры
    Последнее сообщение Anonymous
  • Ошибка 406 при отправке/получении данных JSON
    Anonymous » » в форуме Php
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous

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