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

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

3 ответов


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

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

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


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

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


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

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