Как указать константу является байтом или коротким?

Для длинного типа данных я могу суффикс числа с 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 литералов.

Ответ 3

Например:

public static final byte CURRENCY_SYMBOL = 26;

public static final short MAX_VALUE = 3276;