Java8中的BiSupplier

我所看到的BiConsumerBiPredicateBiFunction但不能BiSupplier或类似。我尝试了下面的代码,但有一个异常说:

“在 BiSupplier 中发现的多个非覆盖抽象方法”。

@FunctionalInterface
public interface BiSupplier<T, R> {

    /**
     * Gets a first.
     *
     * @return a first
     */
    T getFirst();


    /**
     * Gets a second.
     *
     * @return a second
     */
    R getSecond();
}

可以请一些人帮我解决这个问题。

回答

Function(PredicateConsumer)之间的概念是不同的Supplier

一个简单的解释表:

  • Function将 1 个输入转换为 1 个输出。BiFunction转换 2 个输入。所以理论上,可以有TriFunction等......
  • Predicate工作原理相同,Function但输出始终为boolean.
  • Consumer消耗 1 个输入并且不返回任何内容 ( void)。BiConsumer消耗2个输入。所以理论上,可以有TriConsumer等......

现在,Supplier。的Supplier线匝没有(0输入)变换为输出。请注意,上面的功能接口提供一个( Functionand Predicate) 或( Consumer) 输出。

Supplier从创造的东西没有如你所知,这是不可能有一个以上的返回类型。从理论上讲,BiSupplier这意味着“从两个虚无中创建一些东西”,这在 Java 上下文中是没有意义的(但是,“一个虚无”确实如此:)Supplier<String> supplier = () -> "Hi";

你可以理解Supplier<T>Function<Void, T>(在实践中不起作用,但原理是一样的)。现在,BiSupplier<T>BiFunction<Void, Void, T>它真的没有任何意义。


以上是Java8中的BiSupplier的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>