如何在 Java 中从 Kotlin 高阶函数正确显示参数的名称



下面是Kotlin编写的下载函数,用于了解下载进度和诸如下载或失败或成功之类的语句,我创建了一个名为'listener'的回调函数,带有两个参数。

芬兰湾的科特林:

object Downloader{
fun download( url:String, listener:((progress:Int, status:Int )->Unit) ){
//...
}
}

Java:

Downloader.download( "TargetUrl" , new Function2<Integer, Integer, Unit>() {
@Override
public Unit invoke(Integer integer, Integer integer2) {
//..
}
});

正如你在java代码中看到的,我们不知道'integer'和'interger2'代表什么。我的问题是如何在java中保存这些名称?

预期Java代码:

Downloader.download( "TargetUrl" , new Function2<Integer, Integer, Unit>() {
@Override
public Unit invoke(Integer progress, Integer status) {
//..
}
});
非常感谢!!

要让调用者知道这些参数的含义,您可以考虑:

  1. 正确记录。
  2. 创建一个接口作为替代。
interface Listener {
fun onChanged(progress: Int, status: Int)
}
object Downloader{
fun download( url:String, listener: Listener) { ... }
}

您可以从Java调用它(尽管调用者仍然可以更改这些参数名称)。

download("url", new Listener() {
@Override
public void onChanged(int progress, int status) {
// ...      
}
});

最新更新