在 Java 中,什么类型表示带有 3 个参数的函数或 lambda 表达式?
In Java, what type represents a function or lambda expression that takes 3 parameters?
Java 8 有 Supplier<T>
用于 0 个参数函数,Function<T, R>
用于 1 个参数函数,BiFunction<T, U, R>
用于 2 个参数函数。
什么类型表示函数或 lambda 表达式,如
中那样采用 3 个参数
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
组合类似
的内容
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 的 NFunction,您可以使用 jOOλ which has a Function3
interface(最多 Function8 以及有用的 TupleN)。
Java 8 有 Supplier<T>
用于 0 个参数函数,Function<T, R>
用于 1 个参数函数,BiFunction<T, U, R>
用于 2 个参数函数。
什么类型表示函数或 lambda 表达式,如
中那样采用 3 个参数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
组合类似
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 的 NFunction,您可以使用 jOOλ which has a Function3
interface(最多 Function8 以及有用的 TupleN)。