2011-12-20 6 views
5

私はJavaのこの機能を理解していませんでした。私はそれがコーディングをより簡単にし、時にはきれいに見えることを知っていますが、これを実際に使うのは何ですか?反対に私は、警告を表示する方が良いと感じています。将来、コードを変更する前に誰かが参照できるようになります。この@SuppressWarningsは効率の向上につながりますか?これはコーディング標準に従っていますか?@SuppressWarningsの使用方法

答えて

5

他の回答には、すでに@SuppressWarnings多くのユースケースを説明したが、私はは時々あなたは絶対に言語自体の限界を克服するために@SuppressWarningsを使用する必要があり、これらの場合に@SuppressWarningsの使用は絶対に合法であるという点を強調したいです。

@SuppressWarningsの場合は、コードを変更して警告を取り除くことができます(ただし、必ずしも常に受け入れられるとは限りません)。ここで

あなたは絶対に@SuppressWarningsせずに警告を取り除くことができない場合、いくつかの一般的な例です:

  • (あなたが一般的な配列を作成することはできませんので)
  • 配列担保ジェネリックコレクションを実装するクラスからMapへそれらの実装(異なるマップエンティティにジェネリック型パラメータの異なる値を割り当てることができないため)
1

実際の使用は警告を抑制することです。それでおしまい。それ以下のものはありません。私はそれがコンパイル効率に影響するとは思っていませんが、間違いなく時間効率を実行しません。

3

ジェネリック(Java < = 1.4)をサポートしていないレガシーコードを扱っているときにキャスト警告を取り除く唯一の実行可能な方法です。

+2

ジェネリックサポートまたはキャスト警告に使用されるだけではありません。 –

+1

誰が言ってるの?:) –

+0

あなたの投稿を読んでください。 –

9

プログラミング時には、コンパイラの警告と、最良の場合は警告なしで(そしてもちろんエラーも)コンパイルしてください。

しかし、警告を取り除くことができず、コードが正しいことを知っているか、変更できないことがあります。次に、コンパイラーから何か問題があると毎回気にしたくはありません。

あなたが言及したコマンドでそれを抑制することができます。

1

コンパイル時にSuppressWarningsの使用が使用されます(したがって、コンパイラのみがSuppressWarningsアノテーションを見たときに何をするかを知っています)。

JavaDoc状態:

The set of warnings that are to be suppressed by the compiler in the annotated element. Duplicate names are permitted. The second and successive occurrences of a name are ignored. The presence of unrecognized warning names is not an error: Compilers must ignore any warning names they do not recognize. They are, however, free to emit a warning if an annotation contains an unrecognized warning name.

1

あり@SuppressWarningsを使用するためのいくつかの理由がありますが、最も有用な例1は、以下のとおりです。

  • は、警告の数千人との既存のプロジェクトを持ちます。あなたのチームは今警告に気をつけたいが、すべての警告を修正する時間はない。

    アノテーションを使用すると、すばやく修正できない警告を抑制し、「クリーン」な基盤を得ることができます。

    何千ものコードがあるときには誰も警告コードをチェックするのを恐れることはないので、コードベースに警告がなく、チーム内の他の人が誰かがすぐにわかるようになるので、 2つの警告でコードをチェックインしています。

  • サードパーティ製のライブラリを使用しているため、多くの場合、libのコードを変更する以外は修正できないという警告が表示されます。

私の意見では、最初の理由は、@SuppressWarningsの最適な使用例の1つです。

関連する問題