加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

在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中的问题是真正的歧义,既不具体.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读