如何使用Java读取kotlin类(Android)的回调

问题描述 投票:0回答:1

这是我的科特琳课:

class example {

    var a = 0

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

如何在Java代码中使用此功能?

java android kotlin callback
1个回答
0
投票

编辑:正如注释中提到的@Drawn Raccoon一样,您只需使用Unit.INSTANCE:

就可以从Java代码中调用add方法。
Java:
example e = new example();
e.add(16, a -> {
    // do some work with 'a'
    return Unit.INSTANCE;
});

或像没有返回值一样从kotlin调用它:

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

不正确(有关正确答案,请参见“编辑”部分:] >>

我认为您不能将Unit类型用作将从Java代码调用的回调的输出类型。 Java中无法识别Unit。相反,您可以使用Void?(我不知道'Void',现在我无法对其进行测试)。

kotlin中的代码:

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']

© www.soinside.com 2019 - 2024. All rights reserved.