如何将参数声明为没有返回值的函数?

ar-*_*r-g 2 kotlin

我在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中声明它,所以上面的代码可以工作?

Ale*_*nov 5

你试过用过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)