Diese Frage kam in der Spring-Klasse, die einige lange Klassennamen hat. Gibt es eine Grenze in der Sprache für Klassennamen?Hat Java eine Begrenzung für die Länge des Klassennamens?
Antwort
Die Java Language Specification besagt, dass Bezeichner in der Länge unbegrenzt sind.
In der Praxis wird das Dateisystem jedoch die Länge des resultierenden Dateinamens begrenzen.
Nein. Java legt keine Begrenzung für den Klassennamen fest. Wenn Sie jedoch mit anderen Systemen (z. B. JNI) kommunizieren, ist es besser, auf der sicheren Seite zu sein.
Das heißt ** undefined Verhalten **, und schlechte Teil aller Spezifikationen)) – gavenkoa
65535 Zeichen glaube ich. Von der virtuellen Java-Maschine Spezifikation:
Die Länge des Feldes und Methodennamen, Feld und Methodendeskriptoren und andere konstante Stringwerte ist begrenzt auf 65535 Zeichen durch die 16-Bit unsigned Länge Artikel der Struktur CONSTANT_Utf8_info (§4.4.7). Beachten Sie, dass das Limit für die Anzahl Bytes in der Codierung und nicht auf die Anzahl der codierten Zeichen ist. UTF-8 codiert einige Zeichen unter Verwendung von zwei oder drei Bytes. Daher sind Zeichenfolgen , die Multibyte-Zeichen enthalten, weiter eingeschränkt.
hier:
http://docs.oracle.com/javase/specs/jvms/se5.0/html/ClassFile.doc.html#88659
mit JDK 1.5, die praktische Grenze für Klassennamen auf Windows XP mit 255 - längere Namen gab Fehler im Dateisystem. Dies war der vollständige Name (Verzeichnis + Paket + Klasse).
Ich habe nicht versucht, JDK 1.6 auf Vista oder Windows 7, hoffentlich Sun behoben, um das NTFS-Limit von 8000 oder so zu sein.
Wer kennt die Antwort auf JDK 1,6+? – ycomp
- 1. Abrufen des Klassennamens für die Protokollierung
- 2. Gibt es eine Begrenzung für die Länge des Schlüssels (Zeichenfolge) in JS-Objekt?
- 3. Begrenzung der Bildlaufleiste Länge
- 4. Hat boost :: future dann irgendeine Begrenzung seiner Länge?
- 5. Hat LevelDB eine maximale Länge für Schlüssel?
- 6. BeanStalkd hat eine Begrenzung auf Tubename?
- 7. Timeout hat keine Begrenzung? - HttpsURLConnection
- 8. Ermitteln des Klassennamens von SVGAnimatedString
- 9. die Länge der Zeichen in einem Textfeld Begrenzung während Html.EditFor
- 10. Hat ViewData eine maximale Länge?
- 11. Url Länge Begrenzung in Sharepoint Online REST
- 12. Regex für die Länge des Teilstrings
- 13. Ändern des Klassennamens und Ändern der Ereignisantwort
- 14. Gibt es in Java eine globale Variable für die Länge des Tages?
- 15. Änderung des Klassennamens Ereignis in jQuery
- 16. Abrufen des Klassennamens von der erweiterten Klasse
- 17. mdDialog.hide() durch Angabe des Klassennamens des md-dialogs
- 18. Warum var anstelle des Klassennamens verwenden?
- 19. Begrenzung der Länge der Eingabe in JTextField funktioniert nicht
- 20. Java. Mit einem booleschen Wert überprüfe ich, ob eine eingegebene Ziffer die richtige Länge hat.
- 21. Hat C# String eine Länge Grenze
- 22. Begrenzung java ssl Debug-Protokollierung
- 23. Begrenzung des unendlichen parallelen Datenstroms
- 24. Größe/Länge Begrenzung der Array-Typ in PostgreSQL
- 25. Beeinflusst die Länge des Schlüssels die Wörterbuchleistung?
- 26. Spark-UDF gibt eine Länge des Feldes statt Länge Wert
- 27. Begrenzung des zulässigen RAM für einen Dienst, möglich mit MaxWorkingSet
- 28. Was ist die Byte-Länge für unterschiedliche Zeichen in Java?
- 29. Gibt es eine Begrenzung für die Anzahl der Codezeilen, die Sie in eine Eclipse Java Doument setzen können?
- 30. SAS Länge des Wertes der Makrovariablen überschreitet die maximale Länge
Die Java-VM-Spezifikation besagt, dass jeder konstante String auf 65535 Bytes beschränkt ist: http://java.sun.com/docs/books/jvms/second_edition/html/ClassFile.doc.html#88659 –
Dies ist von der zweite Ausgabe (wie Jon's Antwort). In der dritten Ausgabe gibt es keinen solchen Hinweis. –
Es ist da in der Java SE8 Edition. – EJP