この質問は、かなり長いクラス名を持つSpringクラスで出てきました。クラス名の長さの言語に制限はありますか?
Java言語仕様 は、識別子の長さが無制限であることを示しています。
しかし実際には、ファイルシステムは結果のファイル名の長さを制限します。
65535文字だと思います。 Java仮想マシン仕様から:
フィールド名とメソッド名、フィールド記述子とメソッド記述子、およびその他の定数文字列値の長さは、CONSTANT_Utf8_info構造(§4.4.7)の16ビットの符号なし長さ項目によって65535に制限文字です。制限はエンコードのバイト数であり、エンコードされた文字の数ではないことに注意してください。 UTF-8は、2バイトまたは3バイトを使用して一部の文字をエンコードします。したがって、マルチバイト文字を組み込んだ文字列はさらに制約されます。
ここに:
https://docs.Oracle.com/javase/specs/jvms/se6/html/ClassFile.doc.html#88659
JDK 1.5では、Windowsでのクラス名の実際的な制限XP、255-長い名前ではファイルシステムでエラーが発生しました。これはフルネーム(ディレクトリ+パッケージ+クラス)でした。
VistaまたはWindows 7でJDK 1.6を試したことはありませんが、SunがNTFSの制限である8000程度になるように修正したと思います。
いいえ。Javaはクラス名に制限を課しません。ただし、他のシステム(JNIなど)とインターフェイスする場合は、安全を確保することをお勧めします。