Есть ли в Java ограничение по длине имени класса? - PullRequest
34 голосов
/ 24 июня 2009

Этот вопрос возник в классе Spring, который имеет довольно длинные имена классов. Есть ли в языке ограничение на длину имени класса?

Ответы [ 4 ]

47 голосов
/ 24 июня 2009

В спецификации языка Java указано, что длина идентификаторов не ограничена.

На практике файловая система ограничивает длину получаемого имени файла.

31 голосов
/ 24 июня 2009

65535 символов я считаю. Из спецификации виртуальной машины Java:

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

здесь:

http://docs.oracle.com/javase/specs/jvms/se5.0/html/ClassFile.doc.html#88659

3 голосов
/ 29 октября 2009

В JDK 1.5 практическое ограничение для имен классов в Windows XP с более 255 именами приводило к ошибкам в файловой системе. Это было полное имя (каталог + пакет + класс).

Я не пробовал JDK 1.6 в Vista или Windows 7, надеюсь, Sun установила для NTFS ограничение в 8000 или около того.

0 голосов
/ 24 июня 2009

Нет. Java не накладывает никаких ограничений на имя класса. Но если вы взаимодействуете с другими системами (например, JNI), лучше быть в безопасности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...