2009-03-30 11 views
36

Czy istnieje maksymalna długość nazwy klasy/metody/zmiennej w języku Java? JLS nie wspomina o tym. Wiem, że bardzo długie nazwy są problematyczne z punktu widzenia czytelności kodu i łatwości konserwacji, ale tylko z ciekawości istnieje ograniczenie (domyślam się, że nazwy klas mogą być ograniczone maksymalnym ograniczeniem nazwy pliku systemu plików).Maksymalna długość nazwy zmiennej lub metody w Javie

Odpowiedz

18

Niestety, rzeczywiście znalazłem odpowiedź w JLS: http://java.sun.com/docs/books/jls/third_edition/html/lexical.html#40625 Wygląda na to, że nazwy identyfikatorów mają nieograniczoną długość.

znaleźć podobne pytanie (choć nie pojawiają się w moim początkowym wyszukiwania, lub gdy Wpisałem tytuł pytanie, które jest dziwne): Maximum Method Name Length

+2

To jest dla języka, ale format pliku klas jest bardziej restrykcyjny. – Uri

+1

Co jest właściwie dość zaskakujące, biorąc pod uwagę, że język był przeznaczony do kompilacji dla plików klas ... – Uri

+1

prawda, zastanawiam się, co się stanie, jeśli faktycznie spróbujesz stworzyć śmiesznie długą nazwę zmiennej – talg

31

Jeśli się nie mylę, limit nie jest w samym języku, ale w formacie pliku klas, który ogranicza nazwy do 64k, więc dla wszystkich celów praktycznych i celów długość identyfikatora nie jest problemem. Konkretnie, to jest definicja stałej łańcucha w basenie, co wydaje się sugerować, maksymalna długość wynosi 16 bit:

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

Nazwy klas może być większym problemem dla systemów plików, zgadzam się, że” nie jestem pewien, co jest aktualnie obsługiwane.

+3

Powinna to być zaakceptowana odpowiedź – Henry

7

Jeśli przekroczysz limit rozmiaru nałożony przez VM dla metody nazwy wtedy pojawia się błąd kompilatora (przynajmniej w wersji javac używam):

Main.java:1: reprezentacja UTF8 na ciąg „aaaaaaaaaaaaaaaaaaaa ...” jest zbyt długi dla stałej puli