Gibt es eine maximale Länge für Klassen-/Methoden-/Variablennamen in Java? Die JLS scheint das nicht zu erwähnen. Ich weiß, dass sehr lange Namen aus der Lesbarkeit von Code und der Wartbarkeitsperspektive sowieso problematisch sind, aber gerade aus Neugier besteht eine Einschränkung (ich denke, Klassennamen können durch die maximale Dateinamenbeschränkung des Dateisystems begrenzt sein).Max Name Länge der Variablen oder Methode in Java
Antwort
Entschuldigung, tatsächlich gefunden die Antwort in der JLS: http://java.sun.com/docs/books/jls/third_edition/html/lexical.html#40625 Es scheint, dass Bezeichner Namen unbegrenzte Länge haben.
gefunden Auch ähnliche Frage (obwohl es nicht in meiner ersten Suche angezeigt hat, oder wenn ich getippt die Frage Titel, die seltsam ist): Maximum Method Name Length
Wenn ich mich nicht irre, ist das Limit nicht in der Sprache selbst, sondern im classfile-Format, das Namen auf 64k beschränkt, so dass für alle praktischen Absichten Bezeichner Länge kein Problem ist. Insbesondere ist dies die Definition einer konstanten Zeichenfolge im Pool, der die maximale Länge scheint zu implizieren, 16 Bit:
CONSTANT_Utf8_info {
u1 tag;
u2 length;
u1 bytes[length];
}
Klassennamen eher ein Problem sein kann für Dateisysteme, Ich bin damit einverstanden, ich Ich bin mir nicht sicher, was derzeit unterstützt wird.
Dies sollte die akzeptierte Antwort sein – Henry
Wenn Sie die Größenbeschränkung für das Verfahren durch die VM auferlegt gehen Namen dann erhalten Sie einen Compiler-Fehler (zumindest mit der Version von javac ich verwende):
Main.java:1: UTF8 Darstellung für string „aaaaaaaaaaaaaaaaaaaa ...“ ist zu lang für die konstanten-Pool
Das ist für die Sprache, aber das Klassendateiformat ist restriktiver. – Uri
Das ist eigentlich ziemlich überraschend, wenn man bedenkt, dass die Sprache für die Klassendateien kompiliert werden sollte ... – Uri
true, ich frage mich, was passiert, wenn Sie tatsächlich einen lächerlich langen Variablennamen erstellen – talg