任何人都可以解釋下面的編譯錯誤?有趣的是,如果我將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