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

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

Сообщение Anonymous »

При прохождении какого-то онлайн-курса он упомянул, что если у нас есть условное выражение в 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
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

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

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