是否可以用泛型传递接口的类型?

的接口:

public interface AsyncCallback<T>

在我的测试方法中:

Mockito.any(AsyncCallback.class)

把<ResponseX>放在后面或为.class没有工作。


当前回答

在thSoft的回答中,对any()方法的限定调用意味着我可以删除限定,因为返回类型允许推理:

private HashMap<String, String> anyStringStringHashMap() {
    return Matchers.any();
}

其他回答

在thSoft的回答中,对any()方法的限定调用意味着我可以删除限定,因为返回类型允许推理:

private HashMap<String, String> anyStringStringHashMap() {
    return Matchers.any();
}

我在使用Spring示例时遇到了类似的问题:

Mockito.when(repo.findAll(Mockito.<Example<SrvReqToSupplierComment>>any()))
            .thenReturn(Lists.emptyList());

这里,你必须使用限定,b/c findAll方法可以接受多种类型,比如Sort和Iterable。当然,你也可以使用带有类型安全警告的Mockito.any(Example.class)。

把pierrefevrier的评论作为答案,如果它出现在答案中而不是评论中,可能会很有用。

使用新版本的Mockito:(Matchers.<AsyncCallback<ResponseX>>any()

你可以强制转换它,如果你喜欢,添加抑制警告:

@SuppressWarnings("unchecked")    
AsyncCallback<ResponseX> callback = Mockito.any(AsyncCallback.class)

如果Java允许“泛型”泛型,他们可以有这样的方法,这就是你正在寻找的

private static <T, E> T<E> mock(Class<T<E>> clazz)

有一种类型安全的方法:使用ArgumentMatchers.any()并使用类型限定它:

ArgumentMatchers.<AsyncCallback<ResponseX>>any()