[英]In Java, what type represents a function or lambda expression that takes 3 parameters?
Java 8有0個參數函數的Supplier<T>
,1個參數函數的Function<T, R>
,2個參數函數的BiFunction<T, U, R>
。
什么類型表示一個函數或lambda表達式,它接受3個參數,如in
SomeType lambda = (int x, double y, String z) -> x; // what is SomeType?
在C#中, Func<T, TResult>
最多可重載16個參數,因此我們可以編寫
Func<int, double, string, int> lambda = (int x, double y, string z) => x;
Java標准庫是否提供類似的東西,或者您是否必須編寫自己的“TriFunction”接口來處理具有3個參數的函數?
你必須編寫自己的功能界面。 JDK沒有提供這樣的實現。
請注意,您始終可以使用現有類型TriFunction
類似TriFunction
Function<Integer, Function<Double, Function<String, Integer>>> func =
i -> d -> s -> i + d.intValue() + Integer.parseInt(s);//whatever random implementation
func.apply(42).apply(1.5).apply("1234");
JDK只能用於BiFunctions,但沒有什么能阻止你創建TriFunction:
@FunctionalInterface public interface TriFunction<T1, T2, T3, R> {
R apply(T1 v1, T2 v2, T3 v3);
}
TriFunction<Integer, Double, String, Integer> f = (i, d, s) -> i;
或者,如果您需要N最多為8的Nunction ,您可以使用具有Function3
接口的 jOOλ (最多可以使用Function8以及TupleN)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.