什么是这个kotlin代码相当于java

时间:2017-10-23 13:21:19

标签: java

以下是一些 kotlin 代码,用于打印任何语句或语句块的执行时间:

fun exeTime(code: () -> Unit) {
    var start = System.currentTimeMillis()
    code()
    var end = System.currentTimeMillis() - start
    println("Execution time: " + end + "ms")
}

可以像这样使用:

exeTime {
    // some code
    // ...
}

exeTime 函数在Java中的等效构造是什么?

3 个答案:

答案 0 :(得分:4)

我会是这样的:

public void exeTime(Runnable code){
    long start = System.currentTimeMillis();
    code.run();
    long end = System.currentTimeMillis() - start;
    System.out.println("Execution time: " + end + "ms");
}

关于高阶函数和lambdas

阅读此doc

答案 1 :(得分:1)

嗯,Java没有数据类型作为单位,所以基本上你不能传递方法而不是它的值。当您在Java中将方法作为方法的参数传递时,它将执行。如果你需要用Java做同样的最简单的方法来使用反射。类似的东西。

void <T> execTime (Class<T> type, String methodName, Object... methodParams) {

}

答案 2 :(得分:1)

这是“高阶函数”的简单示例,即以另一个函数作为参数的函数。 在Java中,您也可以使用1.8中的lambdas,其外观如下:

public static void main(String[] args) {
    exeTime(v -> System.out.println("from Lambda"));
}

static void exeTime(Consumer<Void> code) {
    long start = System.currentTimeMillis();
    code.accept(null);
    long end = System.currentTimeMillis() - start;
    System.out.println("Execution time: " + end + "ms");
}

此外,Runnable可用作接口类型。

在1.8之前,您将使用匿名函数而不是传递给exeTime函数的lambda。