Bei der Ausführung einer Methode mit dem Callback-Block von kotlin aus Java-Code war Folgendes erforderlich. In den folgenden Fällen auf der Java-Seite return Unit.INSTANCE; Wenn kein Kompilierungsfehler vorliegt, Ich habe mich gefragt, was ich tun soll, nur weil mir gesagt wurde, dass der Rückgabetyp des Ramda-Ausdrucks inkonsistent ist, also habe ich ihn gepostet.
kotlin
class KotlinClass {
fun loadItems(itemIds: List<String>,
complete: (isSuccess: Boolean, itemList: List<Item>) -> Unit) {
/*Einige Verarbeitung*/
complete(true, itemList)
}
}
Java (Anrufer)
kotlinClass.loadItems(itemIds, (isSuccess, items) -> {
/*Einige Verarbeitung*/
//Hinweis: Schließlich Einheit.Muss INSTANCE zurückgeben
return Unit.INSTANCE;
})
Selbst wenn in kotlin kein Rückgabewert der Methode vorhanden ist, wird diese tatsächlich als Auslassen der Rückgabeeinheit behandelt, und es scheint, dass Sie Unit.INSTANCE zurückgeben müssen, um die Kompatibilität mit Java aufrechtzuerhalten.
Referenz: http://stackoverflow.com/questions/37828790/why-do-i-have-to-return-unit-instance-when-implementing-in-java-a-kotlin-functio
Recommended Posts