有没有可能在Kotlin中使用println作为函数引用
在Java 8和9中,可以将方法引用打印到控制台,例如:
List.of(1, 2, 3).forEach(System.out::println);
在Kotlin中,我没有find使用方法引用打印到控制台的方法。 我试图翻译这个使用函数引用:
listOf(1, 2, 3).forEach { println(it) }
至:
listOf(1, 2, 3).forEach { ::println }
但是我得到这个错误:
Overload resolution ambiguity. All these functions match. @InlineOnly public inline fun println(): Unit defined in kotlin.io @InlineOnly public inline fun println(message: Any?): Unit defined in kotlin.io @InlineOnly public inline fun println(message: Boolean): Unit defined in kotlin.io @InlineOnly public inline fun println(message: Byte): Unit defined in kotlin.io @InlineOnly public inline fun println(message: Char): Unit defined in kotlin.io @InlineOnly public inline fun println(message: CharArray): Unit defined in kotlin.io @InlineOnly public inline fun println(message: Double): Unit defined in kotlin.io @InlineOnly public inline fun println(message: Float): Unit defined in kotlin.io @InlineOnly public inline fun println(message: Int): Unit defined in kotlin.io @InlineOnly public inline fun println(message: Long): Unit defined in kotlin.io @InlineOnly public inline fun println(message: Short): Unit defined in kotlin.io
我怎样才能解决这个分辨率模糊? 在这种情况下是否可以使用函数引用?
问题是你正在传递一个函数,这个函数又返回了println
函数,所以编译器不知道要返回哪个println
。 你想要做的是使用println
本身作为参数,你需要使用()
:
listOf(1, 2, 3).forEach(::println)
- 为什么这个Spring Boot应用程序找不到主页面?
- 为什么Kotlin的字符串插值在Java中串联字符串?
- 如何在Kotlin Native中导入Java包
- 用readLine()方法分割Kotlin字符串
- Spring @PostConstruct取决于@Profile
- Kotlin内部类不能访问外面的私人方法?
- Android的致命异常在android.arch.lifecycle Kotlin lang
- Kotlin:unit testing期间@JvmStatic方法NoClassDefFoundError / ClassNotFoundException
- 使用kotlin lambda回调的unit testing场景