我的科特琳课:
class InstallationReceiver(activity : RootActivity, url : String, progressCallback :
((percentage : Int) -> Unit)?, callback : ((isUpdated : Boolean) -> Unit)?, packageName:
String){
//my code
}
我正在将lambda的乐趣从Java类传递给此类:
new InstallationReceiver(getActivity(), apkUrl, integer -> **{
String text = "Installing app"+integer;
textView.setText(text);
}**,true,null);
为什么此lambda函数要求使用Unit返回类型?我什至尝试返回Unit.INSTANCE 但没有任何帮助我。它仍然显示错误。
答案 0 :(得分:2)
那些星号是什么?
我尝试了这个最小的示例,它起作用了:
科特林
class InstallationReceiver(
a: ((percentage: Int) -> Unit)?
)
Java
new InstallationReceiver(percentage -> {
String text = "Installing app" + percentage;
return Unit.INSTANCE;
});
此外,您正在传递true
和null
,其中构造函数期望使用lambda((isUpdated : Boolean) -> Unit
)和不可为空的String
。
您可以在传递空字符串的同时避免编译(您不应该这样做,因为应用程序会在运行时崩溃),但是请确保您需要传递lambda而不是布尔值。
与上面的示例类似:
isUpdated -> {
// your code
return Unit.INSTANCE;
}