2012-01-08 4 views
3

Можно создать дубликат:
Max name length of variable or method in Javaпредел длины имени переменной в Java

Я читал Java документы и он говорит: «Имя переменной может быть любой допустимый идентификатор - неограниченный - последовательность длин букв Unicode и цифр ... "в C++ длина имени переменной составляет около 255 символов в зависимости от компилятора, поэтому как это обрабатывается в java, компилятор усекает имя переменной после x числа символов, и если это верно что будет x?

+1

Вы пробовали? ;) – fge

+0

Почему вы ожидаете, что компилятор усекает строку, если в документации указано, что строки могут иметь произвольную длину? –

+0

@KerrekSB Я просто не понимаю, как это может быть неограниченным, если только имя переменной было 15gb –

ответ

6

В соответствии с the class file format spec (последним пунктом в соответствии с разделом 4.10):

Длина поля и методом имен, полевыми и методами дескрипторов и других значений константы строки ограничена 65535 символов с помощью 16-битового беззнакового длина объекта структуры CONSTANT_Utf8_info (§4.4.7). Обратите внимание, что ограничение ограничено количеством байтов в кодировке, а не количеством кодированных символов. UTF-8 кодирует некоторые символы с использованием двух или трех байтов. Таким образом, строки, содержащие многобайтовые символы, дополнительно ограничены.

Это относится также и к локальным переменным из-за LocalVariableTable, указывающих на значения CONSTANT_Utf8_info для имен переменных.

1

Учитывая, что java.lang.String имеет поле

private final int count; 

, чтобы указать количество символов в нем, максимальная длина идентификатора не должно быть больше, чем

Integer.MAX_VALUE

1

Никто в здравом уме никогда не должен находиться в милях от предела. Вы достигаете точки, где она побеждает цель. Вы хотите выбрать имена, которые уточняют ваши намерения, но это не означает, что имя переменной должно соперничать с «Ulysses» в длину. Предел больше связан с хорошим вкусом и удобочитаемостью.

+1

Thats not the point Я пишу компилятор, и мне нужно знать такие ограничения –

Смежные вопросы