web-dev-qa-db-ja.com

これはどういう意味ですか:JLSの提案で「プライベート」修飾子が順不同

MyItem宣言に「final」を追加する前に、最初にこの警告を受け取りました。

プライベートフィールド 'myItem'をfinalにすることができます。宣言またはコンストラクタでのみ初期化されます。

private Item myItem;

最終を追加した後、これは私が得る警告です:

JLSの提案で「プライベート」修飾子が順不同。

final private Item myItem;

私がこれを取得している理由を誰かが知っていますか?私はいくつかの調査を行いましたが、この問題を解決するために何かを見つけることができないようです。

12
user5593863

第一に、それらが一生の間に間違いなく変更されない場合、それをfinalにすることはちょうど良い習慣です。これは、オブジェクトの可変性を推論するのに役立ちます。

2番目の警告では、 [〜#〜] jls [〜#〜] セクション8.1.1、8.3.1、8.4.1を探しています。

publicまたはprivatestaticの前にある必要があり、finalの前にある必要があります。

12
sisyphus

通常の順序は、次のようにprivatefinalの前に来ることです。

private final Item myItem;

修飾子の順序が異なる場合でも、コードはコンパイルされて同じように動作しますが、JLSによって提案された標準の順序に慣れている人は、コードが奇妙に見えると思います。

7
dnault

この警告の理由は、異なるタイプの修飾子の順序です。 この質問の答え を確認してください。

この場合、ファイナルの前にアクセス修飾子を置くだけです。

0
Xin Meng