簡體   English   中英

使用正確的語法在 Java 文件中使用帶有參數的 Kotlin Function

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM