这个kotlin代码与java的等价物是什么
下面是一些打印任何语句或语句块的执行时间的kotlin代码:这个kotlin代码与java的等价物是什么,java,Java,下面是一些打印任何语句或语句块的执行时间的kotlin代码: fun exeTime(code: () -> Unit) { var start = System.currentTimeMillis() code() var end = System.currentTimeMillis() - start println("Execution time: " + end + "ms") } 它可以这样使用: exeTime { // some co
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) {
}
void execTime(类类型、字符串方法名、对象…方法参数){
}
这是一个简单的“高阶函数”示例,即将另一个函数作为参数的函数。
在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");
}
publicstaticvoidmain(字符串[]args){
exeTime(v->System.out.println(“来自Lambda”);
}
静态无效时间(消费者代码){
长启动=System.currentTimeMillis();
code.accept(空);
long end=System.currentTimeMillis()-开始;
System.out.println(“执行时间:+end+ms”);
}
也可以将Runnable
用作接口类型
在1.8之前,您应该使用匿名函数,而不是传递给
exeTime
函数的lambda。同样,只需使用可运行代码作为参数,并在函数中调用code.run()
。