IntelliJ IDEA 2017.2.6次のJavaクラスがあります。IntelliJ IDEAは一部の未使用のメソッドをグレーアウトしますが、すべてではありません
通常、IntelliJは未使用のプロパティを明るいグレーで表示します。このクラスでは、getReason()
しかグレーではありません。 コンストラクタやフィールドをグレーアウトしないことは意味があります。メソッドtoJSON()
は、抽象スーパークラスEinzMessageBody
で定義されているため、存在しなければならないため、これもグレー表示されないようにしてください。 getReason()
は決して使用されないため、グレー表示されます。 しかし、なぜgetUsername()
はグレー表示されていませんか? 右クリックしてを選択すると、が見つかりません。IntelliJは、使用状況が見つからないと報告します。
私は>ファイル名を指定して実行検査によって名前this questionを認識していますが、を実行すると>分析コードを点検し、分析>未使用のプロパティは、この上の任意の効果を持っていないようです。どちらもIDEを再起動しません。
キャッシュを無効にして再起動は、最初に表示がリセットされてグレー表示されないようにしますが、インデックス作成が完了すると再び強調表示されます。
は、ここでそれがgetReason()
もgetUsername()
もないのIntelliJ
に表示されたスーパークラスEinzMessageBody
だけtoJSON()
を指定している方法です。
getReason()
とgetUsername()
の違いは何ですか? extends EinzMessageBody
と何も変わりません@Override
注釈を削除
:HonzaZidekさんのコメント@について
。
完全に空のプロジェクトを作成してのみ、このクラスを貼り付けると
EinzMessageBody
はすべてがtoJson()
方法以外はグレー表示になります。これは、クラスがインスタンス化されていないため、コンストラクタがグレー表示され、getReason()
とgetUsername()
の両方が同じように動作するため、期待どおりです(両方がグレー表示されます)。実際のプロジェクト設定のように、クラスを別のサブパッケージに移動すると、これは期待どおりに動作します。
これは、クラスをインスタンス化するときに、期待どおりに動作します。コンストラクタがグレー表示されなくなると、
getReason()
とgetBody()
は正しくグレー表示されます。 (デスクトップPCではなく)と同じ動作が同様にそこにたまたま私はちょうど私のラップトップ上で引っ張っ
。
getUsername()
のいずれかの用途についても検索しました。他のサブクラスのEinzMessageBody
に見つかりました。これを削除しても、getUsername()
のEinzUnregisterResponseMessageBody
はグレー表示に変更されませんでした。
This answerはIntelliJのは、パフォーマンス上の理由から、一般的に使用される名前を確認していない可能性があるため、>ファイル名を指定して実行検査によって名>未使用宣言を分析を実行することを示唆しています。 getReason()
とgetUsername()
は未使用ですが、表示スタイルは変わりません。
が、ユーザー名や理由がこれまでに二重引用符が含まれている場合は、あなたのコードが解除されます。 –
ありがとう!これはスタブとしてのみ意図されていましたが、私はおそらくそれを逃したでしょう:) – lucidbrot
それでは、それはWebアプリケーションですか? Webページからフィールドを参照していませんか?またはXML構成からですか? IntelliJは、getterのgetUsernameを 'username'フィールドとしてのみ参照されているとしても* used *としてマークするのに十分なインテリジェントです。有料バージョンでは、「Find Usages」にこれらの場所が表示されますが、コミュニティバージョンであればわかりません。少なくとも、IntelliJはフィールドとそのアクセサ(セッターとゲッター)を一緒に評価します(Javaがコンセプトを受け入れていなくても) 'username'を*プロパティ*と見なすべきです。 –