При прохождении какого-то онлайн-курса он упомянул, что если у нас есть условное выражение в Java, которое с одной стороны возвращает байт или короткое число, а с другой стороны — конечное целое число, то, если значение int вписывается в короткое или байтовое значение, оно будет понижено чтобы соответствовать этому типу. Однако это работает только для Final int, а не для Final Short.
Интересно, какова логика этого, почему компилятор допускает одно понижающее приведение и предотвращает другое? Это кажется логичным и правильным, так почему же это ограничение?
Следующий код работает и компилируется нормально
public class Testing {
public static void main(String[] args) {
final int x = 99;
byte y = 33;
byte r = true ? x : y;
System.out.println(r);
}
}
Но если я изменю его на short, то получу ошибку компиляции
public class Testing {
public static void main(String[] args) {
final short x = 99;
byte y = 33;
byte r = true ? x : y;
// java: incompatible types: possible lossy conversion from short to byte
System.out.println(r);
}
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... -occurs-fo
Почему в условном выражении Java понижение типа возвращаемого значения происходит только для Final int, а не для Final S ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как преобразовать список[int, int, int] в кортеж[int, int, int], а не в кортеж[int, ...]
Anonymous » » в форуме Python - 0 Ответы
- 290 Просмотры
-
Последнее сообщение Anonymous
-