任何人都可以解释下面的编译错误?有趣的是,如果我将get()
方法的返回类型更改为String
,代码编译就好了。请注意,thenReturn
方法有两个重载:一个一元方法和一个至少需要一个参数的可变参数方法。在我看来,如果调用在这里不明确,那么它总是含糊不清。Scala 2.7.7编译器/解释器中的伪歧义引用错误?
更重要的是,有没有什么办法来解决歧义?
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")
}
error: ambiguous reference to overloaded definition, both method thenReturn in trait OngoingStubbing of type
java.lang.Object,java.lang.Object*)org.mockito.stubbing.OngoingStubbing[java.lang.Object] and method thenReturn in trait OngoingStubbing of type (java.lang.Object)org.mockito.stubbing.OngoingStubbing[java.lang.Object] match argument types (java.lang.String) when(t.get()).thenReturn("a")
我打开了一张关于此的票据,因为我发现斯卡拉甚至没有与自己保持一致。门票https://lampsvn.epfl.ch/trac/scala/ticket/2991。 – 2010-01-29 12:01:04
门票被关闭为无效,现在有关于正在发生什么的解释,我将复制到我自己的答案中。目前,我认为这个变化的机会不大。 – 2010-02-03 13:09:31