【发布时间】:2021-01-31 08:06:27
【问题描述】:
想象一下,当我们需要在 kotlin 中使用 :: 来调用带有参数的静态方法时。实际上我只能使用没有参数的函数来做到这一点,例如
Base64::hashCode
但是当我尝试使用时
Base64::encodeToString
然后我收到一个警告
重载分辨率不明确。所有这些功能都匹配。 public open fun encodeToString(input: ByteArray!, flags: Int): String!在 android.util.Base64 中定义 public open fun encodeToString(input: ByteArray!, offset: Int, len: Int, flags: Int): String!在android.util.Base64中定义
编译器也不接受这种形式
(Base64::encodeToString)( byteArrayOf(2), Base64.DEFAULT)
我想使用 here 描述的 mockito 的新功能来模拟此方法
感谢您提供任何信息!
【问题讨论】:
-
您是在尝试调用该方法,还是获取对它的引用?在 Kotlin 中,
::运算符仅用于后者(以便您可以将引用传递给将使用它的 else 对象)。如果你想 call 方法,你可以像在 Java 中那样做,例如Base64.encodeToString(…)。或者,如果您想要参考,我希望上下文允许它被消除歧义——如果不是,也许您可以发布周围的代码? -
是的,我需要该方法的参考,但是对于具有多个参数的方法,我不能这样做。