この質問は、かなり長いクラス名を持つSpringクラスで出てきました。クラス名の長さの言語に制限はありますか?
4 に答える
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 がそれを 8000 程度の NTFS 制限に修正したことを願っています。
いいえ、Java ではクラス名に制限はありません。ただし、他のシステム (JNI など) とやり取りする場合は、安全を確保することをお勧めします。