web-dev-qa-db-fra.com

Longueur maximale du nom de la variable ou de la méthode en Java

Existe-t-il une longueur maximale pour les noms de classe/méthode/variable en Java? le JLS ne semble pas le mentionner. Je sais que les noms très longs sont de toute façon problématiques du point de vue de la lisibilité et de la maintenabilité du code, mais par curiosité, il y a une limitation (je suppose que les noms de classe peuvent être limités par la limitation maximale du nom de fichier du système de fichiers).

39
talg

Désolé, j'ai trouvé la réponse dans le JLS: http://Java.Sun.com/docs/books/jls/third_edition/html/lexical.html#40625 Il semble que les noms d'identifiants soient illimités longueur.

J'ai également trouvé une question similaire (bien qu'elle ne soit pas apparue dans ma recherche initiale ou lorsque j'ai tapé le titre de la question, ce qui est bizarre): Longueur maximale du nom de la méthode

22
talg

Si je ne me trompe pas, la limite n'est pas dans la langue elle-même mais dans le format classfile, qui limite les noms à 64 Ko, donc à toutes fins pratiques, la longueur de l'identifiant n'est pas un problème. Plus précisément, il s'agit de la définition d'une chaîne constante dans le pool, ce qui semble impliquer que la longueur maximale est de 16 bits:

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

Les noms de classe peuvent être plus problématiques pour les systèmes de fichiers, je suis d'accord, je ne suis pas sûr de ce qui est actuellement pris en charge.

35
Uri

Si vous dépassez la limite de taille imposée par le VM pour les noms de méthode, vous obtenez une erreur de compilation (au moins avec la version de javac que j'utilise):

Main.Java:1: La représentation UTF8 pour la chaîne "aaaaaaaaaaaaaaaaaaaa ..." est trop longue pour le pool constant

10
TofuBeer