web-dev-qa-db-ja.com

Javaクラス名の長さに制限はありますか?

この質問は、かなり長いクラス名を持つSpringクラスで出てきました。クラス名の長さの言語に制限はありますか?

36
Eugene Katz

Java言語仕様 は、識別子の長さが無制限であることを示しています。

しかし実際には、ファイルシステムは結果のファイル名の長さを制限します。

50
Robert Munteanu

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

33
Jon

JDK 1.5では、Windowsでのクラス名の実際的な制限XP、255-長い名前ではファイルシステムでエラーが発生しました。これはフルネーム(ディレクトリ+パッケージ+クラス)でした。

VistaまたはWindows 7でJDK 1.6を試したことはありませんが、SunがNTFSの制限である8000程度になるように修正したと思います。

3
Stanleymit

いいえ。Javaはクラス名に制限を課しません。ただし、他のシステム(JNIなど)とインターフェイスする場合は、安全を確保することをお勧めします。

0
lud0h