如何解决方法引用中的过载歧义?

假设我想将java方法Log.d(String, String)赋值给方法类型(String, String) -> Int的变量x ,我这样做:

 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) }