web-dev-qa-db-ja.com

Javaの変数またはメソッドの名前の最大長

Javaのクラス/メソッド/変数名の最大長はありますか? JLSはそれについて言及していないようです。非常に長い名前はコードの可読性と保守性の観点から問題があることはわかっていますが、好奇心から、制限があります(クラス名は、ファイルシステムの最大ファイル名の制限によって制限される可能性があります)。

39
talg

申し訳ありませんが、実際にはJLSで答えが見つかりました: http://Java.Sun.com/docs/books/jls/third_edition/html/lexical.html#40625 識別子名は無制限のようです長さ。

同様の質問も見つかりました(ただし、最初の検索では表示されなかった、または奇妙な質問のタイトルを入力したとき): メソッド名の最大長

22
talg

私が間違っていない場合、制限は言語自体ではなく、名前を64kに制限するクラスファイル形式にあります。そのため、すべての実用的な目的と目的のために、識別子の長さは問題ではありません。具体的には、これはプール内の定数文字列の定義であり、最大長が16ビットであることを意味しているようです。

CONSTANT_Utf8_info {
    u1 tag;
    u2 length;
    u1 bytes[length];
}

クラス名の方がファイルシステムの問題である可能性があります。同意しますが、現在サポートされているものはわかりません。

35
Uri

VMメソッド名に課せられたサイズ制限を超えると、コンパイラエラーが発生します(少なくとも、私が使用しているjavacのバージョンの場合)。

Main.Java:1:文字列 "aaaaaaaaaaaaaaaaaaaa ..."のUTF8表現が定数プールに対して長すぎます

10
TofuBeer