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
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
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.
Powinna to być zaakceptowana odpowiedź – Henry
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
To jest dla języka, ale format pliku klas jest bardziej restrykcyjny. – Uri
Co jest właściwie dość zaskakujące, biorąc pod uwagę, że język był przeznaczony do kompilacji dla plików klas ... – Uri
prawda, zastanawiam się, co się stanie, jeśli faktycznie spróbujesz stworzyć śmiesznie długą nazwę zmiennej – talg