在scala varargs中强制单个参数
发布时间:2020-12-16 09:13:35 所属栏目:安全 来源:网络整理
导读:给定一个 java类有两种方法(从mockito取得): OngoingStubbingT thenReturn(T value);OngoingStubbingT thenReturn(T value,T... values); 如果我从scala调用 ....thenReturn("something") 我收到一个错误: Description Resource Path Location Typeambiguo
给定一个
java类有两种方法(从mockito取得):
OngoingStubbing<T> thenReturn(T value); OngoingStubbing<T> thenReturn(T value,T... values); 如果我从scala调用 ....thenReturn("something") 我收到一个错误: Description Resource Path Location Type ambiguous reference to overloaded definition,both method thenReturn in trait OngoingStubbing of type (x$1: java.lang.Object,x$2: <repeated...>[java.lang.Object])org.mockito.stubbing.OngoingStubbing[java.lang.Object] and method thenReturn in trait OngoingStubbing of type (x$1: java.lang.Object)org.mockito.stubbing.OngoingStubbing[java.lang.Object] match argument types (java.lang.String) 我不知道如何解决这个问题. 解决方法
这些答案都是错误的问题.差异是微妙的,但这与
linked ticket年不一样.那个人要求不合理的体操称之为非变体方法.对于这一个,以下就够了.
thenReturn[String]("something") 或者,如果您不想出于某种原因,您不需要类型别名和演员.您可以直接使用结构类型的归属. (this: { def thenReturn[T](s: T): OngoingStubbing[T] }).thenReturn("something") 这里的问题是在超载和多态性交集中的类型推断 – 一种方法更具体,但是scalac并不知道哪一种.由于重载和元组转换之间的相互作用,SI-2991中的问题是真正的歧义,既不具体. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |