我在kotlin有一个功能
fun printExecutionTime(block: () -> Any) {
run {
val currentTimeMillis = System.currentTimeMillis()
block()
Logr.d("Execution time of " + block.javaClass.name + " -> " + System.currentTimeMillis().minus(currentTimeMillis))
}
}
Run Code Online (Sandbox Code Playgroud)
在java代码中,我想传递void引用函数作为参数,但不能返回值的bcs
PerformanceKt.printExecutionTime(this::voidFunc);
Run Code Online (Sandbox Code Playgroud)
一种方法是使用界面
interface Action {
fun call()
}
Run Code Online (Sandbox Code Playgroud)
是否可以在没有额外接口的情况下在kotlin中声明它,所以上面的代码可以工作?
你试过用过Unit吗?
fun f(voidFunc: () -> Unit) {
// <...>
}
Run Code Online (Sandbox Code Playgroud)
upd:经过一些谷歌搜索我应该承认,这个解决方案对你不起作用.有一个公开的问题涉及使用Kotlin函数类型的Java方法引用.
但是,仍然有一种在Java中使用的解决方法(看起来很难看,是的):
public Unit voidFunc() {
// <...>
return null;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1877 次 |
| 最近记录: |