簡體   English   中英

在Java中,什么類型表示帶有3個參數的函數或lambda表達式?

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

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