Javaで非推奨のインポート警告を抑制する


111

Javaで非推奨のクラスをインポートする場合:

import SomeDeprecatedClass;

次の警告が表示されます。 The type SomeDeprecatedClass is deprecated

この警告を抑制する方法はありますか?


4
ええそれは理想的ですが、この場合、最近廃止されたAPIの一部を使用するHadoopのライブラリを使用しているため、このライブラリを使用するかどうかは本当に選択できません。さらに、これは単に学校のプロジェクトのためのものであり、維持する必要があるものは何もありません。
Ed Mazur、

回答:


129

クラスまたはメソッドでこのアノテーションを使用します。

@SuppressWarnings( "deprecation" )

29
これはインポートで機能しますか?メソッドなどでそのアノテーションを使用しましたが、インポートで認識されないようです。
Ed Mazur、

2
クラスレベルでアノテーションを使用すると、インポートもカバーされます。これは、少なくともEclipse(まあ、Rational Application Developer)内でこれを実行しますが、コマンドラインコンパイル中はわかりません。
craigforster 2009

20
コマンドラインの「javac」またはantの<javac>タスクでは機能しないようです。-Xlint:-deprecationフラグも使用しません。javacのバグのようです。
Archie、

1
非推奨が静的フィールドとローカルのSuppressWarningsの一部である場合は機能しません。ここでは完全修飾クラス名の方が良いアプローチのようです。
mheinzerling

16
質問は「インポート」ステートメントに関するものであり、修正はEclipse / Intellijに対してのみ機能するので(コメントによればそうであるように)、答えは先頭にしてはなりませんが、最終的な真の情報源は修正が適用されるjavacです動作しません。この答えは本当に質問に答えます:stackoverflow.com/a/20909204/2032701
Ruslan

179

警告を回避するには、クラスをインポートしないでください

代わりに、完全修飾クラス名を使用してください

できるだけ少ない場所で使用してください。


15
+1これは受け入れられた答えであるはずです。クラス全体の非推奨を抑制しないという利点があります。
k_g 2015年

11
これはより良い答えです。@SuppressWarningsクラスレベルでは輸入は対象外です
Alex

7
これはJava 9までの最良の答えです。Java9で
Christopher

14

ハックとしてインポートを実行して、コード内で完全修飾名を使用することはできません。

また、javac -Xlint:-deprecationを試してみることもできます。


9

インポートを次のように変更してこれを解決しました:

import package.*

次に、非推奨のクラスを使用するメソッドに@SuppressWarnings("deprecation")


パッケージ全体からすべてをインポートしないでください。パフォーマンスに影響します。不要なコンパイラがすべてのクラスをロードすると、深刻なパフォーマンスの問題が発生します。未使用のクラスがインポートに存在しないことを常に利用してください。
Arundev 2016

1
ここでは例として百科事典を使用しています(はい、私は自分で日付を記入しました)。オランウータンに関する情報を探している場合は、「O」の本を手に入れるか、すべての本を手に入れますか?
アスカロニア語2018

@Arundev明確に言うと、コンパイルが完了するまでに時間がかかる可能性があるということですが、実行時には、これは実行のパフォーマンスに影響を与えません。
パウロ

@Paulo-それが何を言おうとしているのか、それが使用されていない場合でも、インポートされたクラスの可用性をチェックします。したがって、未使用のインポートがたくさんある場合は、常にそれを削除することをお勧めします。
アルンデフ

7

推奨されないメソッド(java.sql.ResultSetのgetUnicodeStream(String columnLabel)など)を使用してインターフェースをオーバーライド/実装しているとすると、アノテーション@SuppressWarnings( "deprecation")を使用しただけでは非推奨の警告は解消されません。 、同じ新しいメソッドに@Deprecatedアノテーションを付けない限り。これは論理的です。それ以外の場合は、インターフェイスの説明をオーバーライドするだけでメソッドを「廃止」することができないためです。


「@SuppressWarnings」と「@Deprecated」のこの組み合わせは、独自のメソッド内で非推奨のメソッドを呼び出す場合にも機能します。
Swav 2015

1
私はその説明を長い間探していました。ありがとうございました!
Jabari Dash

2

あなたは使うことができます:

javac FileName.java -Xlint:-deprecation

ただし、これにより警告が表示され、非推奨の原因となっているコードまたは非推奨のAPIを使用しているコードの部分もわかります。これらの警告を使用してコードを実行するか、コードに適切な変更を加えることができます。

私の場合、私が使用していたのsomeListItem.addItem("red color")に対して、コンパイラは私に使用することを望んでいましたsomeListItem.add("red color");

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.