有没有一种干净的方法可以用泛型参数模拟类?假设我必须模拟一个类Foo<T>,我需要将它传递到一个需要Foo<Bar>的方法中.我可以很容易地做到以下几点:

Foo mockFoo = mock(Foo.class);
when(mockFoo.getValue).thenReturn(new Bar());

假设getValue()返回泛型类型T.但当我稍后将其传递到一个方法时,会有小cat .铸造是唯一的方法吗?

推荐答案

我认为你确实需要施展它,但它不应该太糟糕:

Foo<Bar> mockFoo = (Foo<Bar>) mock(Foo.class);
when(mockFoo.getValue()).thenReturn(new Bar());

Java相关问答推荐

当一个链表中间有一个循环时,它的松散部分会发生什么?

ApachePOI:不带换行的新行

是否保证在事务性块的末尾标记违反约束?

关于泛型的覆盖规则

当我已经安装了其他版本的Java时,如何在Mac OSX 14.3.1上安装Java 6?

对Java中的通配符参数的混淆

在Spring Boot中使用哪个Java类来存储创建时间戳?

无法使用ApacheSpark依赖项构建JavaFX应用程序

基于接口的投影、原生查询和枚举

与IntArray相比,ArrayList<;Int>;对于大量元素的性能极差

Java 11 HttpCookie.parse在解析包含JSON的Cookie时引发IlLegalArgumentException

一对多关系和ID生成

JavaFX复杂项目体系 struct

协同 routine 似乎并不比JVM线程占用更少的资源

为什么创建Java动态代理需要接口参数

为什么没有加载java.se模块?

没有Google Play服务,Firebase Auth无法工作

java.lang.ClassCastException:com.google.firebase.FirebaseException无法转换为com.google.fire base.auth.FirebaseAuthException

当我try 返回可选时,Mock无法正常工作

错误:JOIN/ON的参数必须是boolean类型,而不是bigint类型.Java Spring启动应用程序