Я пишу немного кода в J2ME. У меня есть класс с методом setTableId(Short tableId)
. Теперь, когда я пытаюсь записать setTableId(100)
это дает ошибку времени компиляции. Как я могу установить короткое значение, не объявляя другую короткую переменную?
При установке Long
значение я могу использовать setLongValue(100L)
и это работает. Так, что делает L
имейте в виду здесь и для чего символ Short
значение?
Спасибо
В Java целочисленные литералы имеют тип int, если они не суффикс с буквой 'L' или 'l' (Заглавная L предпочтительнее, так как строчную L трудно отличить от цифры 1). Если суффикс L, то литералы имеют тип long.
Суффикс не имеет специального названия в спецификации языка Java. Не существует суффиксов и для других целочисленных типов. Поэтому если вам нужен литерал short или байт, их нужно привести:
byte foo = (byte)0;
short bar = (short)0;
В setLongValue(100L) не обязательно указывать суффикс L, потому что в этом случае литерал int автоматически расширяется до long. В спецификации языка Java это называется расширением примитивного преобразования.
Байт или короткий литерал не существуют. Вам нужно привести к короткому, используя (короткий) 100
Вы можете использовать setTableId((short)100)
. Я думаю, что это было изменено в Java 5 таким образом, что числовые литералы, присвоенные байту или short и находящиеся в диапазоне для целевого типа, автоматически принимаются за целевой тип. Однако последние J2ME JVM происходят от Java 4.