簡體   English   中英

這個 kotlin 代碼與 java 的等價物是什么

[英]what is the equivalent of this kotlin code to java

以下是一些打印任何語句或語句塊的執行時間的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");
}

閱讀有關高階函數和 lambda 的文檔

好吧,Java 沒有作為 Unit 的數據類型,所以基本上你不能傳遞一個方法而不是它的值。 當您將方法作為 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。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM