【发布时间】:2010-01-29 01:08:28
【问题描述】:
谁能解释下面的编译错误?有趣的是,如果我将get() 方法的返回类型更改为String,代码编译得很好。请注意,thenReturn 方法有两个重载:一元方法和至少采用一个参数的可变参数方法。在我看来,如果这里的调用是模棱两可的,那么它总是模棱两可的。
更重要的是,有什么办法可以解决歧义?
import org.scalatest.mock.MockitoSugar
import org.mockito.Mockito._
trait Thing {
def get(): java.lang.Object
}
new MockitoSugar {
val t = mock[Thing]
when(t.get()).thenReturn("a")
}
错误:对重载定义的模糊引用, 两种方法 thenReturn 在 trait OngoingStubbing 类型
java.lang.Object,java.lang.Object*)org.mockito.stubbing.OngoingStubbing[java.lang.Object] 和方法 thenReturn 在 trait OngoingStubbing 类型 (java.lang.Object)org.mockito.stubbing.OngoingStubbing[java.lang.Object] 匹配参数类型(java.lang.String) when(t.get()).thenReturn("a")
【问题讨论】:
-
我为此开了一张票,因为我发现 Scala 甚至与自己不一致。票务lampsvn.epfl.ch/trac/scala/ticket/2991.
-
票被关闭为无效,现在有一个关于发生了什么的解释,我将复制到我自己的答案中。目前,我认为改变的可能性不大。
标签: scala compiler-errors