回答:
タイプセーフな方法があります。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場合、要素のタイプを確認できます。
MatchersArgumentMatchersMockito 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()、個別の割り当てを必要とせずにインラインで使用できます。