Почему в условном выражении Java понижение типа возвращаемого значения происходит только для Final int, а не для Final SJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Почему в условном выражении Java понижение типа возвращаемого значения происходит только для Final int, а не для Final S

Сообщение Anonymous »

При прохождении какого-то онлайн-курса он упомянул, что если у нас есть условное выражение в Java, которое возвращает с одной стороны байт или короткий, а с другой стороны – окончательный int, то если значение int соответствует короткому или byte, оно будет преобразовано в соответствие с этим типом. Однако это работает только для финального int, а не для финального короткого типа.
Интересно, какова логика этого, почему компилятор допускает одно понижающее приведение предотвращая при этом другое? Это кажется логичным и правильным, так почему же такое ограничение?
Следующий код работает и компилируется нормально
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);
}
}

Но если я изменю его на короткий, то получу ошибку компиляции
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
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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