首页 > 解决方案 > 有人可以帮我将这个带有回调的 Kotlin 函数转换为 java 函数吗?

问题描述

到目前为止,我还没有接触过 kotlin。因此,我发现很难理解这个“回调”实际上是如何工作的。所以,我不知道如何将 kotlin 的这个“回调”功能写到 java 中。

fun stopStream(callback:(text:String)->Unit) {
        if(bidiStream == null) return

        bidiStream?.closeSend()

        for (response in bidiStream!!) {
            val queryResult = response.queryResult

            Log.d(TAG, "Response Text: '${queryResult.responseText}'")
            callback(queryResult.responseText)
        }

        bidiStream = null
        queryInput = null
    }

标签: javafor-loopkotlinfunctional-programmingjvm

解决方案


您知道许多 IDE 都提供这样的转换吗?

(text:String)->Unit接受 aString并且什么也不产生,所以它是 a Consumer<String>。除此之外没有太大变化

void stopStream(Consumer<String> callback) {
    if(bidiStream == null) return;

    bidiStream.closeSend();

    for (Response response: bidiStream) {
        var queryResult = response.getQueryResult();

        Log.d(TAG, String.format("Response Text: %s"), queryResult.getResponseText());
        callback(queryResult.getResponseText());
    }

    bidiStream = null;
    queryInput = null;
}

推荐阅读