Максимальная длина имени переменной или метода в Java - PullRequest
37 голосов
/ 30 марта 2009

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

Ответы [ 3 ]

32 голосов
/ 30 марта 2009

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

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

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

19 голосов
/ 30 марта 2009

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

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

7 голосов
/ 30 марта 2009

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

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

...