Как указать константу является байтом или коротким?
Для длинного типа данных я могу суффикс числа с L, чтобы компилятор знал, что он длинный. Как насчет байта и краткости?
В качестве мотивации следующее приводит к ошибке несоответствия типа:
List<Short> a = Arrays.asList(1, 2, 3, 4);
Ответ 1
То, о чем вы говорите, это целостный литерал (1) по сравнению с длинным литералом (1L). В Java на самом деле нет такой вещи, как короткий или байтовый литерал. Но это обычно не имеет значения, потому что существует неявное преобразование из целых литералов в типы byte, short и char. Таким образом:
final byte one = 1; // no typecast required.
Неявное преобразование допускается только в том случае, если литерал находится в требуемом диапазоне. Если вам не нужен тип; например.
final byte minusOne = (byte) 255; // the true range of byte is -128 .. +127
Существуют и другие случаи, когда требуется явное преобразование; например для устранения неоднозначности перегрузки метода или для принудительной интерпретации в выражении. В таких случаях вам нужно использовать трансляцию для преобразования.
Ваш пример - это еще один из этих случаев.
Но суть в том, что нет синтаксиса Java для выражения byte или short литералов.