如何将回调函数从Java传递到Kotlin类

greysqrl:

我有一个Kotlin课,如下所示(这是一个简单的示例,因此它不会“做任何有用的事情”)

class MyKotlinClass (private val handleSomeCallBack: (ByteArray) -> Unit) {
    private val someBuffer = BytesBuilder()

    fun myFunction(bytesList: List<Byte>) {
        handleSomeCallBack(someBuffer.toArray())
    }
}

我想从一个Java类中调用此代码,因此,在该类中我声明了以下内容:

public MyJavaClass() {
    messageParser = new MyClass(handleSomeCallback);
}

传递的回调方法是:

private void handleSomeCallback(byte[] dataBytes) {

}

(在文件中正确声明了MyClass)

我遇到的问题是我不知道如何将回调传递给MyKotlinClass的构造函数。

我尝试了多种方法,包括

messageParser = new MyClass(handleSomeCallback(byte[] dataBytes));

messageParser = new MyClass(this::handleSomeCallback(byte[] dataBytes));

但是无论我尝试什么,我都会收到一个错误。

我相信答案与lambda有关,但我不太清楚从Java调用此语法应该是什么。

MatPag:

您可以执行以下操作:

MyKotlinClass instance = new MyKotlinClass(byteArray -> {
    // your code
    return Unit.INSTANCE;
});

Unit用作@ADM 此处建议的单独方法的返回类型

您只需要添加

compileOptions {
  sourceCompatibility JavaVersion.VERSION_1_8
  targetCompatibility JavaVersion.VERSION_1_8
}

到你android的应用程序中build.gradle

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将回调从活动传递到片段

如何将回调从 TableView 传递到 TableView Cell?

如何将回调函数传递给子组件?

如何将回调函数传递给父级

如何将回调函数传递给返回多行的aggregate()?

从javascript调用dart编译的Javascript时,如何将回调函数传递到dart编译的Javascript中?

使用Context.actorOf时如何将回调函数传递给akka actor构造函数?

如何将回调函数作为构造函数参数传递并分配给类属性

如何将回调作为参数传递给另一个函数

如何将回调函数从C ++传递给Objective-C

如何使用Python 3.x将回调及其参数从包装函数传递到装饰器?

将回调函数从父组件传递到子组件react

如何将回调函数全局绑定到 tkinter 中的小部件类型?

如何使用spring boot将回调方法从JavaScript传递到java后端?

Scala-如何将回调传递给方法

如何将回调传递给孩子而不触发它

如何将C ++类函数作为回调传递

如何将回调从一个子组件传递到另一个

如何传递对拥有成员函数的对象的引用,在该成员函数中将回调函数注册到JS中的回调函数?

如何将数据从回调函数传递到Windows Phone 8中的MainPage(另一个类)

如何将回发参数从JS传递到VB?

如何在Java中调用将回调作为参数的函数

将回调函数传递给指令

如何将回调作为变量传递给预定义的回调

如何将类类型传递给kotlin中的函数?

如何将回调传递给传递给“ vo”库的生成器?

Tkinter将回调函数结果传递给另一个类

我如何将回调结果传递给变量并自由访问var

React.js如何将回调传递给子组件?