jep 455 введен примитивные типы в шаблонах, экземпляре и коммутаторе в качестве функции предварительного просмотра в JDK 23. Он продолжается как функция предварительного просмотра в JDK 24 и 25, поэтому эта функция не подробно описана в спецификации языка Java. Для других пар необходим тест времени выполнения, чтобы определить, может ли преобразование быть проведено без потери информации. < /P>
Например: < /p>
int x = getValue(); // Which returns 42
switch (x) {
case byte -> System.out.println("byte");
case int -> System.out.println("int");
}
< /code>
Проверка времени выполнения проверяет, что 42 будет соответствовать байту и совпадает, печать 'byte'. < /p>
Если мы изменим порядок случаев: < /p>
switch (x) {
case int -> System.out.println("int");
case byte -> System.out.println("byte");
}
< /code>
Это приведет к ошибке компилятора, потому что случай Int теперь доминирует в случае байта. Из предыдущих меток переключателя также
Apply.
< /blockquote>
Пока что все имеет смысл.switch (x) {
case Integer -> System.out.println("int");
case byte -> System.out.println("byte");
}
< /code>
Этот код будет компилировать без ошибки, и результат будет «int '. Любое значение, которое будет соответствовать байту, также будет соответствовать коробочному целому числу. Отказ от этого из -за доминирования за схему.
Подробнее здесь: https://stackoverflow.com/questions/797 ... inate-byte