java这个kotlin代码的等价物是什么?

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

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

它可以像这样使用:

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

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

我会是这样的:

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

阅读关于高阶函数和lambdas的文档

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

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

这是一个“高阶函数”的简单例子,即将另一个函数作为参数的函数。 在Java中,你也可以使用从1.8开始的lambda表达式,如下所示:

 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函数。

Interesting Posts