[英]Consuming a Kotlin Function with an Argument in a Java file using the correct syntax
我在Kotlin文件中有一個名為onItemSelected
的變量
var onItemSelected: ((String) -> Void)? = null
在Java文件中,我試圖設置該變量,但無法找出正確的語法。
lambda 表達式一直想要返回一個 Void,但是,當我返回一個 void 時,它就無法編譯。
binding.myCustomView.getOnItemSelected() = (item, Void) -> {
//What should happen here?
Log.i("Test", item);
return;
};
我嘗試了各種語法,但我似乎無法正確理解。
使用具有參數的 function 設置變量的正確方法是什么?
在 Kotlin 中,不返回值的函數應該返回Unit
,而不是java.lang.Void
。 事實上,在 Java 中也是如此——在 Java 中你應該返回void
,而不是java.lang.Void
。
因此將 Kotlin 代碼更改為:
var onItemSelected: ((String) -> Unit)? = null
現在在 Java 代碼中,您需要返回kotlin.Unit.INSTANCE
,因為這是存在的唯一Unit
實例( Unit
被聲明為object
)。 如果您在 Kotlin 中執行此操作,則返回Unit.INSTANCE
是隱式的,但您需要在 Java 中顯式執行此操作。
import kotlin.Unit;
// ...
binding.setOnItemSelected(item -> {
System.out.println(item);
// do your thing with item...
return Unit.INSTANCE;
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.