In Java 8 und 9 ist es möglich, Verfahren Referenzen für den Druck auf die Konsole, wie zB haben:ist es möglich, als Funktion Referenz zu verwenden println in Kotlin
List.of(1, 2, 3).forEach(System.out::println);
In Kotlin fand ich nicht ein Möglichkeit, eine Methodenreferenz zum Drucken auf der Konsole zu verwenden. Ich habe zu übersetzen versucht, diese Funktion Referenz verwenden:
listOf(1, 2, 3).forEach { println(it) }
zu:
listOf(1, 2, 3).forEach { ::println }
Aber ich bin immer diese Fehlermeldung:
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
Wie kann ich diese Auflösung Mehrdeutigkeit lösen? Kann in diesem Fall eine Funktionsreferenz verwendet werden?
Wenn Kotlin bietet keine Unterstützung für eine Überlastung Angabe Sie eine Wrapper-Funktion erstellen können, die die korrekte Überlastung und Verwendung Anrufe, die stattdessen. –
Docs-Link: https://kotlinlang.org/docs/reference/reflection.html#function-references – chris