说我想将java方法分配给方法类型Log.d(String, String)
的变量x
,(String, String) -> Int
我这样做是这样的:
val x: (String, String) -> Int = android.util.Log::d
编译器说:
Error:(50, 56) Overload resolution ambiguity:
public open fun d(tag: kotlin.String!, msg: kotlin.String!): kotlin.Int defined in android.util.Log
public open fun d(tag: kotlin.String!, msg: kotlin.String!, tr: kotlin.Throwable!): kotlin.Int defined in android.util.Log
显然,还有第二种方法,Log.d(String, String, Throwable)
但是如何告诉编译器我想要哪一种呢?
目前尚不支持在此处进行歧义消除(稍后会支持)。
解决方法是,可以使用lambda表达式:
{ s, s1 -> android.util.Log.d(s, s1) }
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句