2009-03-30 23 views
36

Esiste una lunghezza massima per i nomi di classe/metodo/variabile in Java? il JLS non sembra menzionarlo. So che i nomi molto lunghi sono comunque problematici dalla leggibilità del codice e dalla prospettiva di manutenibilità, ma solo per curiosità esiste una limitazione (suppongo che i nomi delle classi possano essere limitati dalla limitazione massima del nome del file system).Lunghezza massima del nome della variabile o del metodo in Java

risposta

18

Spiacente, in realtà ho trovato la risposta nel JLS: http://java.sun.com/docs/books/jls/third_edition/html/lexical.html#40625 Sembra che i nomi degli identificatori siano di lunghezza illimitata.

trovato anche domanda simile (anche se non sembra nella mia ricerca iniziale, o quando ho digitato il titolo della domanda che è strano): Maximum Method Name Length

+2

Questo è per la lingua, ma il formato del file di classe è più restrittivo. – Uri

+1

Che in realtà è abbastanza sorprendente, considerando che il linguaggio era destinato alla compilazione per i file di classe ... – Uri

+1

true, mi chiedo cosa succede se in realtà provi a creare un nome variabile ridicolmente lungo – talg

31

Se non sbaglio, il limite non è nel linguaggio stesso ma nel formato classfile, che limita i nomi a 64k, quindi per tutti gli scopi pratici la lunghezza dell'identificatore non è un problema. Nello specifico, questa è la definizione di una stringa costante in piscina, che sembra implicare la lunghezza massima è di 16 bit:

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

nomi classe possono essere più di un problema per i file system, sono d'accordo, io' Non sono sicuro di cosa sia attualmente supportato.

+3

Questa dovrebbe essere la risposta accettata – Henry

7

Se si va oltre il limite di dimensioni imposto dalla VM per il metodo nomi, allora si ottiene un errore di compilazione (almeno con la versione di javac sto usando):

Main.java:1: la rappresentazione UTF-8 per la stringa "AAAAAAAAAAAAAAAAAAAA ..." è troppo lungo per la piscina costante

Problemi correlati