在Java 中將函數作為參數傳遞
在Java 中,將函數作為參數傳遞的能力增強了代碼的多功能性。為了實現這一點,根據您使用的 Java 版本,有多種方法。
Java 8 及更高版本
隨著 Java 8 中 lambda 表達式的出現,透過函數作為參數變得簡單。 Lambda 運算式可讓您定義實作單一抽象方法 (SAM) 介面的匿名函數。例如,您可以定義以下介面:
public interface MyInterface { String doSomething(int param1, String param2); }
在接受MyInterface 類型參數的方法中,您現在可以使用lambda 表達式來傳遞函數,如下所示:
class MyClass { public MyInterface myInterface = (p1, p2) -> { return p2 + p1; }; }
Java 8 之前
Java 8之前,將函數傳遞為的常見方法參數的目的是將它們封裝在 Callable 等介面中。考慮以下方法:
public T myMethod(Callable<T> func) { return func.call(); }
此方法接受 Callable 類型的參數,它表示傳回 T 型別值的函數。您可以定義 Callable 實作來封裝您的函數並將其作為myMethod 的參數。
用法範例:
如果您有一個名為methodToPass 的方法,如果你想作為參數傳遞,你可以建立一個Callable 實現,如下所示:
public int methodToPass() { // do something } public void dansMethod(int i, Callable<Integer> myFunc) { // do something }
然後用Callable 實作呼叫dansMethod方法:
dansMethod(100, new Callable<Integer>() { public Integer call() { return methodToPass(); } });
結論:
這些方法提供了在Java 中將函數作為參數傳遞的不同方法,取決於您的Java 版本和特定要求。透過了解這些技術,您可以增強 Java 程式碼的靈活性和可重複使用性。
以上是如何在 Java 中將函數作為參數傳遞?的詳細內容。更多資訊請關注PHP中文網其他相關文章!