java - Java8中有标准化的泛型函数接口(interface)吗?

标签 java functional-interface

我想知道是否以及在哪里有人定义了一组通用函数接口(interface)来简化和标准化 lambda 的使用。 我来自 C#,核心库完成了这项工作。

我读到了“BiFunction”,发现它很笨拙。特别是当扩展到 TriFunction 等时。

我想出了以下内容:

public interface FI {
@FunctionalInterface
public interface Action<T> {
    void invoke(T arg1);
}
@FunctionalInterface
public interface Function0<TResult> {
    TResult invoke();
}
@FunctionalInterface
public interface Function1<Targ1, TResult> {
    TResult invoke(Targ1 arg1);
}
@FunctionalInterface
public interface Function2<Targ1, Targ2, TResult> {
    TResult invoke(Targ1 arg1, Targ2 arg2);
}
@FunctionalInterface
public interface Function3<Targ1, Targ2, Targ3, TResult> {
    TResult invoke(Targ1 arg1, Targ2 arg2, Targ3 arg3);
}
@FunctionalInterface
public interface Function4<Targ1, Targ2, Targ3, Targ4, TResult> {
    TResult invoke(Targ1 arg1, Targ2 arg2, Targ3 arg3, Targ4 arg4);
}
@FunctionalInterface
public interface Function5<Targ1, Targ2, Targ3, Targ4, Targ5, TResult> {
    TResult invoke(Targ1 arg1, Targ2 arg2, Targ3 arg3, Targ4 arg4, Targ5 arg5);
}
@FunctionalInterface
public interface Function6<Targ1, Targ2, Targ3, Targ4, Targ5, Targ6, TResult> {
    TResult invoke(Targ1 arg1, Targ2 arg2, Targ3 arg3, Targ4 arg4, Targ5 arg5, Targ6 arg6);
}
@FunctionalInterface
public interface Function7<Targ1, Targ2, Targ3, Targ4, Targ5, Targ6, Targ7, TResult> {
    TResult invoke(Targ1 arg1, Targ2 arg2, Targ3 arg3, Targ4 arg4, Targ5 arg5, Targ6 arg6, Targ7 arg7);
}
@FunctionalInterface
public interface Function8<Targ1, Targ2, Targ3, Targ4, Targ5, Targ6, Targ7, Targ8, TResult> {
    TResult invoke(Targ1 arg1, Targ2 arg2, Targ3 arg3, Targ4 arg4, Targ5 arg5, Targ6 arg6, Targ7 arg7, Targ8 atg8);
}
@FunctionalInterface
public interface Function9<Targ1, Targ2, Targ3, Targ4, Targ5, Targ6, Targ7, Targ8, Targ9, TResult> {
    TResult invoke(Targ1 arg1, Targ2 arg2, Targ3 arg3, Targ4 arg4, Targ5 arg5, Targ6 arg6, Targ7 arg7, Targ8 atg8, Targ9 arg9);
}
@FunctionalInterface
public interface Function10<Targ1, Targ2, Targ3, Targ4, Targ5, Targ6, Targ7, Targ8, Targ9, Targ10, TResult> {
    TResult invoke(Targ1 arg1, Targ2 arg2, Targ3 arg3, Targ4 arg4, Targ5 arg5, Targ6 arg6, Targ7 arg7, Targ8 atg8, Targ9 arg9, Targ10 arg10);
}

}

最佳答案

javaslang[1] 提供 Function0-Function8 甚至 CheckedFunction0-CheckedFunction8。它们甚至提供了额外的功能,例如“内存”和“柯里化(Currying)”。

http://javaslang.io

关于java - Java8中有标准化的泛型函数接口(interface)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38475683/

相关文章:

java - 使用 BiFunction 代替 Comparator 不起作用

java - 如何使用camel将文件从源复制到目标

java - 如何使用 Hamcrest 进行匹配器收集?

java - 使用 GATE twitter 模型的斯坦福 POS 标记器速度很慢

java - 如何使用intellij正确远程调试pod?

java - java中的可调用与供应商接口(interface)

java - 是否可以在 Java 8 中使用对象的特定方法(或静态方法)作为仿函数

java - 方法引用的通用功能接口(interface)的方法签名

Java:缓冲图像绕其中心的旋转是倾斜的

Java 8 功能接口(interface)(Consumer)附加参数