Lors de l'exécution d'une méthode avec le bloc de rappel de kotlin à partir du code Java, il était nécessaire de faire ce qui suit. Dans les cas suivants, côté Java return Unit.INSTANCE; S'il n'y a pas d'erreur de compilation, Je me demandais quoi faire juste parce qu'on m'avait dit que le type de retour de l'expression Ramda était incohérent, alors je l'ai posté.
kotlin
class KotlinClass {
fun loadItems(itemIds: List<String>,
complete: (isSuccess: Boolean, itemList: List<Item>) -> Unit) {
/*Certains traitements*/
complete(true, itemList)
}
}
java (appelant)
kotlinClass.loadItems(itemIds, (isSuccess, items) -> {
/*Certains traitements*/
//Remarque: Enfin, l'unité.Doit retourner INSTANCE
return Unit.INSTANCE;
})
Dans kotlin, même s'il n'y a pas de valeur de retour de la méthode, elle est en fait considérée comme omettant l'unité de retour, et il semble que vous deviez renvoyer Unit.INSTANCE; afin de maintenir la compatibilité avec elle en Java.
Référence: http://stackoverflow.com/questions/37828790/why-do-i-have-to-return-unit-instance-when-implementing-in-java-a-kotlin-functio
Recommended Posts