6

假设我想将 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),但我如何告诉编译器我想要哪一种?

4

1 回答 1

6

目前不支持这里的消歧(稍后会支持)。

作为一种解决方法,您可以使用 lambda 表达式:

{ s, s1 -> android.util.Log.d(s, s1) }
于 2014-12-08T11:34:23.067 回答