gpt4 book ai didi

java - 将 lambda 函数从 java 类传递到 kotlin 类给我错误

转载 作者:行者123 更新时间:2023-12-02 01:10:49 25 4
gpt4 key购买 nike

我的 kotlin 类(class):

class InstallationReceiver(activity : RootActivity, url : String, progressCallback : 
((percentage : Int) -> Unit)?, callback : ((isUpdated : Boolean) -> Unit)?, packageName:
String){

//my code

}

我将 lambda fun 从 java 类传递给此类,如下所示:

new InstallationReceiver(getActivity(), apkUrl, integer -> **{ 
String text = "Installing app"+integer;
textView.setText(text);
}**,true,null);

为什么这个 lambda 函数需要 Unit 返回类型?我什至尝试返回 Unit.INSTANCE但没有任何帮助我。仍然显示错误。

最佳答案

那些星号是什么?
我尝试了这个最小的例子并且它有效:

Kotlin

class InstallationReceiver(
a: ((percentage: Int) -> Unit)?
)

Java

new InstallationReceiver(percentage -> {
String text = "Installing app" + percentage;
return Unit.INSTANCE;
});

此外,您还传递了 truenull,其中构造函数需要 lambda ((isUpdated : Boolean) -> Unit) 和不可为 null 的 String
您可以在传递空字符串时进行编译(您不应该这样做,因为应用程序会在运行时崩溃),但可以肯定的是您需要传递 lambda 而不是 boolean 值。
与上面的示例类似:

isUpdated -> {
// your code
return Unit.INSTANCE;
}

关于java - 将 lambda 函数从 java 类传递到 kotlin 类给我错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59428323/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com