Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java8中的双供应商_Java_Lambda_Java 8_Functional Interface_Supplier - Fatal编程技术网

Java8中的双供应商

Java8中的双供应商,java,lambda,java-8,functional-interface,supplier,Java,Lambda,Java 8,Functional Interface,Supplier,我见过BiConsumer,BiPredicate,BiFunction,但没有看到BiSupplier或类似产品。我尝试了以下代码,但出现了一个异常,显示: “在BiSupplier中找到多个非重写抽象方法” @functioninterface 公共接口双供应商{ /** *获得第一名。 * *@返回第一个 */ T getFirst(); /** *有一秒钟。 * *@返回一秒钟 */ R getSecond(); } 有人能帮我一下吗。ABiSupplier根本没有意义。方法在Java

我见过
BiConsumer
BiPredicate
BiFunction
,但没有看到
BiSupplier
或类似产品。我尝试了以下代码,但出现了一个异常,显示:

“在BiSupplier中找到多个非重写抽象方法”

@functioninterface
公共接口双供应商{
/**
*获得第一名。
*
*@返回第一个
*/
T getFirst();
/**
*有一秒钟。
*
*@返回一秒钟
*/
R getSecond();
}

有人能帮我一下吗。

A
BiSupplier
根本没有意义。方法在Java中返回单一类型的值

因此,您只需创建一个包含这两个值的类并返回:

class MyValue<T, R> {
    private final T first;
    private final R second;

    // constructors, getters.
}
类MyValue{
私人决赛第一名;
私人决赛R秒;
//构造函数,getter。
}

然后只使用
供应商
,而不是创建新的功能界面。

供应商
相比,
功能
谓词
消费者
)之间的概念不同

一个简单的解释表:

  • 功能
    将1个输入转换为1个输出<代码>双功能转换2个输入。所以理论上,可以有
    三功能
  • 谓词
    的工作原理与
    函数
    相同,但输出总是
    布尔值
  • Consumer
    使用1个输入,不返回任何内容(
    void
    )<代码>双消费者
    消耗2个输入。所以从理论上讲,可以有
    三角消费者
现在,
供应商
供应商
不将任何内容(0个输入)转换为输出。请注意,上面的功能接口提供一个(
函数
谓词
)或无(
使用者
)输出

供应商
从无到有,正如您所知,不可能有多个退货类型。从理论上讲,
BiSupplier
的意思是“从两个无中创建某物”,这在Java上下文中是没有意义的(然而,“一个无”的意思是:
Supplier=()->“Hi”


您可以将
供应商
理解为
功能
(实际上不起作用,但原理相同)。现在,
BiSupplier
将是
BiFunction
,这真的没有任何意义。

在一个功能接口中不能有多个方法。因此,我需要做什么来实现类似的用例?没有足够的细节来理解您真正想要做什么,但是通常这类事情是通过
类或
元组
来处理的。如果
供应商
在函数参数中,我们如何传递值
MyValue
类需要构造函数和getter。如果我理解正确,您可以使用
myFunction(()->newmyvalue(stringA,stringB))
或类似的方法调用函数,具体取决于您如何获取值。但必须首先声明该构造函数以初始化值。
class MyValue<T, R> {
    private final T first;
    private final R second;

    // constructors, getters.
}