コンパイラはこの呼び出しで文句を言うのをやめることはできません:
EasyMock.anyObject(List.class)
リストの種類を指定してみました
EasyMock.anyObject(List<MyType>.class)
しかし、それはオプションではないようです(とにかく、Javaはコンパイル中に型を消去するので、それは愚かです)
この警告を削除するためのクリーンな方法(@SuppressWarningはクリーンな方法のIMOではありません)はありますか?
ありがとうございました
不可能です。これを一般的な制限と呼びます。残念ながら、完全に通常の使用法(ジェネリッククラスのクラスの使用など)の警告を削除できるとは限りません。
ただし、EasyMockを使用すると、次のことができます。
EasyMock.<List<MyType>> anyObject()
これは同じことをしますが、警告はありません。使用したanyObjectは、もう少し読みやすく、静的インポートが可能であるために存在します。
提案としてのみ:
interface A extends List<MyType> {};
EasyMock.anyObject(A.class)
isA()
の代わりにHamcrestマッチャーanyObject()
を使用することもできます。それらの違いは、isA
-matcherは、null
とは異なり、anyObject
の値をチェックすることです。あなたはそれらのマッチャーについてもっと学ぶことができます ここ