下面如何實作這個功能
public T myFunction(Function<T> func) //T is the return type
{
//...some code
return func();
}
我可以使用下面的函式,并且不需要在 myFunction 中宣告引數 a、b、c
myType result = myFunction(() -> doSomething(a, b , c))
uj5u.com熱心網友回復:
然后使用的正確功能介面是Supplier<T>. 它沒有“輸入”型別引數:
public <T> T myFunction(Supplier<T> func) {
// myFunction logic
return func.get();
}
并且呼叫將與您一樣,假設doSomething()hasmyType作為回傳型別。
uj5u.com熱心網友回復:
不幸的是,Java 不是一種“函式式”語言。所以當你定義一個myFunction(Function<T> func)你指定的方法時,myFunction 需要一個擴展介面函式的物件。在這種情況下, Java 中的函式宣告了一個方法R apply(T t),函式接受一個引數。Java SDK 中還有其他介面,例如BiFunction它有一個接受兩個引數的 apply 方法。如果您需要一個需要三個引數的“函式”的方法,您將必須宣告一個具有這些細節的介面。或者你可以使用類似的東西。Apache Commons TriFunction
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/466529.html
