[英]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.