2009-03-30 14 views
36

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

答えて

18

申し訳ありません、実際にはJLSの答えが見つかりました: http://java.sun.com/docs/books/jls/third_edition/html/lexical.html#40625 識別子の名前は無制限の長さのようです。あなたがこの方法のためにVMによって課されるサイズの制限を超えた場合Maximum Method Name Length

+2

これは言語用ですが、クラスファイルの形式はより限定的です。 – Uri

+1

言語がクラスファイルのためにコンパイルされることを考慮して、実際にはかなり驚くべきことです... – Uri

+1

実際には、ばかばかしい長い変数名を実際に作成しようとするとどうなりますか – talg

31

私が間違っていない場合、制限は言語そのものではなく、名前を64kに制限するクラスファイル形式であるため、すべての実際的な意図と目的のために識別子の長さは問題にはなりません。

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

クラス名は、ファイルシステムの問題の以上であってもよい、私は同意し、私は」: 具体的には、これが最大の長さを意味すると思わプールで文字列定数の定義は、16ビットです現在サポートされているものがわからない

+3

これは受け入れられた回答になるはずです – Henry

7

も(それが私の最初の検索では表示されませんでした、または私は奇妙です質問のタイトルを入力したときも)同様の質問を見つけました は、定数プールのためには長すぎる「... aaaaaaaaaaaaaaaaaaaa」UTF8表現文字列:

Main.java:1:名前が、あなたは(少なくとも私が使っているのjavacのバージョンで)コンパイルエラーを取得します