Установка короткого значения Java

Я пишу немного кода в J2ME. У меня есть класс с методом setTableId(Short tableId). Теперь, когда я пытаюсь написать setTableId(100), он дает ошибку времени компиляции. Как установить короткое значение без объявления другой короткой переменной?

При установке значения Long я могу использовать setLongValue(100L), и он работает. Итак, что означает L здесь и каков символ для значения Short?

Спасибо

Ответ 1

В Java целочисленные литералы имеют тип int, если они не имеют буквы "L" или "l" (предпочтение отдается капиталу L, поскольку нижний регистр L трудно отличить от номера 1). Если суффикс с L, литералы имеют тип long.

Суффикс не имеет специального имени в Спецификации языка Java. Также нет суффиксов для любых других целых типов. Поэтому, если вам нужен короткий или байтовый литерал, они должны быть лишены:

byte foo = (byte)0;
short bar = (short)0;

В setLongValue (100L) вам не обязательно обязательно включать L-суффикс, потому что в этом случае int literal автоматически расширяется до длинного. Это называется расширением примитивного преобразования в спецификации языка Java.

Ответ 2

Нет такой вещи, как байт или короткий литерал. Для короткого нажатия нужно использовать (short)100

Ответ 3

Вы можете использовать setTableId((short)100). Я думаю, что это было изменено на Java 5, так что числовые литералы, назначенные байту или короткие и внутри диапазона для цели, автоматически считаются целевым типом. Однако последние J2ME JVM основаны на Java 4.