0
函數引用在Java 8和9,可以有方法引用打印到控制檯,像如:是有可能使用的println在科特林
List.of(1, 2, 3).forEach(System.out::println);
在科特林我沒有找到一個使用方法引用打印到控制檯的方法。我試圖把這種使用函數引用:
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
我怎樣才能解決這個分辨率不確定性?在這種情況下是否可以使用函數引用?
如果科特林不支持指定你可以創建一個調用正確的過載和使用的包裝功能的重載代替。 –
文檔鏈接:https://kotlinlang.org/docs/reference/reflection.html#function-references – chris