繁体   English   中英

如何使用 java 从 kotlin 类(Android)读取回调

[英]How to read with java a callback from a kotlin class (Android)

这是我的 kotlin 课程:

class example {

    var a = 0

    fun add(b: Int, callback: (Int) -> Unit){
        a += b
        callback(a)
    }
}

我如何在java代码中使用这个函数?

编辑:正如评论中提到的@Drawn Raccoon,您可以通过返回Unit.INSTANCE从java代码中调用add方法:

爪哇:

example e = new example();
e.add(16, a -> {
    // do some work with 'a'
    return Unit.INSTANCE;
});

或者从 kotlin 调用它而不返回任何值:

科特林:

add(16) {
    a -> // do some work with 'a'
}

不正确(正确答案请参阅编辑部分):

我认为您不能将Unit类型用于将从 java 代码调用的回调的输出类型。 在 Java 中无法识别Unit 相反,您可以使用Void? (我不知道“Void”,现在我无法测试它)。

科特林中的代码:

class example {

    var a = 0

    fun add(b: Int, callback: (Int) -> Void?){
        a += b
        callback(a)
    }
}

并从java调用它:

example e = new example();
e.add(16, a -> {
    // do some work with 'a'
    return null;
})

并从 kotlin 调用:

val example = example()
e.add(16, { a ->
    // do some work with 'a'
    null
})

[此外,'example' 不是 kotlin 或 java 类的好名字,并尝试使用大写,如 'Example']

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM