java - 从 scala 调用重载的 java 泛型方法

标签 java generics scala mockito

我正在使用 Mockito 通过返回未参数化 ArrayList 的方法来模拟对象,但我不知道如何让它工作

要模拟的方法签名

public java.util.ArrayList getX()

测试代码

var mockee = mock(classOf[Mockee])
when(mockee.getX).thenReturn(Lists.newArrayList(x): ArrayList[_])

这实际上在 IntelliJ 中编译得很好,但在运行时抛出:

[error] ....scala:89: overloaded method value thenReturn with alternatives:
[error]   (java.util.ArrayList[?0],<repeated...>[java.util.ArrayList[?0]])org.mockito.stubbing.OngoingStubbing[java.util.ArrayList[?0]] <and>
[error]   (java.util.ArrayList[?0])org.mockito.stubbing.OngoingStubbing[java.util.ArrayList[?0]]
[error]  cannot be applied to (java.util.ArrayList[_$1])
[error]       when(mockee.getX).thenReturn(Lists.newArrayList(x): ArrayList[_])

最佳答案

以下对我有用:

val mockee = mock(classOf[Mockee])
when[ArrayList[_]](mockee.getX).thenReturn(Lists.newArrayList)

假设“列表”类来自 Google 集合(现在是 Guava)。

关于java - 从 scala 调用重载的 java 泛型方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7363795/

相关文章:

java - 如何自动替换方法及其所有调用中的参数

java - 使用 Elastic Search 6.2.3 在 AWS EC2 上运行 Spring Boot 2.0.3 应用程序

java - JPA 通用字段

scala - 是否可以在 Scala 2.10.0 中的模式匹配中利用案例类继承?

java - 如何阻止 if 语句中的数字变小

java - 比较Java中的日期 - 仅年,月和日

java - 尝试调用方法时出现泛型问题

java - 为数据库类创建通用 "getColumn"方法 (Java)

scala - 如何在 Play 中强制输出 Logger.debug!框架规范2测试?

python - 我如何在Python中迭代函数来创建数组?