web-dev-qa-db-ja.com

EasyMock.anyObject(List.class)呼び出しから警告を削除するにはどうすればよいですか?

コンパイラはこの呼び出しで文句を言うのをやめることはできません:

EasyMock.anyObject(List.class) 

リストの種類を指定してみました

EasyMock.anyObject(List<MyType>.class)

しかし、それはオプションではないようです(とにかく、Javaはコンパイル中に型を消去するので、それは愚かです)

この警告を削除するためのクリーンな方法(@SuppressWarningはクリーンな方法のIMOではありません)はありますか?

ありがとうございました

32
Drahakar

不可能です。これを一般的な制限と呼びます。残念ながら、完全に通常の使用法(ジェネリッククラスのクラスの使用など)の警告を削除できるとは限りません。

ただし、EasyMockを使用すると、次のことができます。

EasyMock.<List<MyType>> anyObject()

これは同じことをしますが、警告はありません。使用したanyObjectは、もう少し読みやすく、静的インポートが可能であるために存在します。

60
Henri Tremblay

提案としてのみ:

interface A extends List<MyType> {};
EasyMock.anyObject(A.class) 
4
Stan Kurilin

isA()の代わりにHamcrestマッチャーanyObject()を使用することもできます。それらの違いは、isA-matcherは、nullとは異なり、anyObjectの値をチェックすることです。あなたはそれらのマッチャーについてもっと学ぶことができます ここ

0
A. Mazur