Подтвердить что ты не робот

Макс. Длина имени переменной или метода в Java

Существует ли максимальная длина для имен класса/метода/переменных в Java? JLS, похоже, не упоминает об этом. Я знаю, что очень длинные имена в любом случае проблематичны с точки зрения читаемости кода и удобства обслуживания, но из-за любопытства есть ограничение (я думаю, что имена классов могут быть ограничены максимальным ограничением имени файла в файловой системе).

4b9b3361

Ответ 1

Извините, на самом деле нашёл ответ в JLS: http://java.sun.com/docs/books/jls/third_edition/html/lexical.html#40625 Кажется, что имена идентификаторов имеют неограниченную длину.

Также был найден аналогичный вопрос (хотя он не появился в моем первоначальном поиске или когда я набрал название вопроса, которое является странным): Максимальная длина имени метода

Ответ 2

Если я не ошибаюсь, предел не в самом языке, а в формате classfile, который ограничивает имена до 64k, поэтому для всех практических целей и целей длина идентификатора не является проблемой. В частности, это определение постоянной строки в пуле, которая, по-видимому, подразумевает максимальную длину 16 бит:

CONSTANT_Utf8_info {
    u1 tag;
    u2 length;
    u1 bytes[length];
}

Имена классов могут быть более проблематичными для файловых систем, я согласен, я не уверен, что в настоящее время поддерживается.

Ответ 3

Если вы перейдете к пределу размера, налагаемому VM для имен методов, тогда вы получите ошибку компилятора (по крайней мере, с версией javac, которую я использую):

Main.java:1: представление UTF8 для строки "aaaaaaaaaaaaaaaaaaaa..." слишком длинный для постоянного пула