回答:
タイプセーフな方法があります。ArgumentMatchers.any()
それを使用して、タイプで修飾します。
ArgumentMatchers.<AsyncCallback<ResponseX>>any()
(Matchers.<AsyncCallback<ResponseX>>any()
Matchers
実際には非推奨ですが、ArgumentMatchers
機能しました。
Java 8を使用すると、any()
型推論が強化されているため、引数や型パラメーターなしで(静的インポートを想定して)単純に使用できます。コンパイラーは、ターゲット・タイプ(メソッド引数のタイプ)から、実際に意味することを認識しますMatchers.<AsyncCallback<ResponseX>>any()
。これは、Java 8より前のソリューションです。
any()
一致AsyncCallback<AnyOtherType>
しませんか?
AsyncCallback<AnyOtherType>
ても、引数の型が 'AsyncCallback <ResponseX>'の場合はコンパイルできません。
when(x.y(any())).thenAnswer(...)
例えば、どこy
ですpublic <T> T y(AsyncCallback<T> arg)
。おそらくそれが必要な場合は、答えのタイプをチェックする方が良いでしょう?
isA()
。オブジェクトがClass
タイプに対応するオブジェクトを保持していて、インターフェースがこれを公開している場合、カスタムマッチャーで確認できます。または、たとえば、aのCollection
場合、要素のタイプを確認できます。
Matchers
ArgumentMatchers
Mockito v2で置き換えられました
キャストするだけで、必要に応じて抑制警告を追加できます。
@SuppressWarnings("unchecked")
AsyncCallback<ResponseX> callback = Mockito.any(AsyncCallback.class)
Javaが「ジェネリック」ジェネリックを許可している場合、彼らはあなたが探しているものであるこのようなメソッドを持つことができます
private static <T, E> T<E> mock(Class<T<E>> clazz)
You cannot use argument matchers outside of verification or stubbing.
@SuppressWarnings
では、別の変数に割り当てる場合any()
は、Intoyの答えのように使用できます。Java 8ではany()
、個別の割り当てを必要とせずにインラインで使用できます。