下面是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) {
//..
}
});
非常感谢!!要让调用者知道这些参数的含义,您可以考虑:
- 正确记录。
- 创建一个接口作为替代。
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) {
// ...
}
});