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个输入。所以理论上,可以有功能
三功能
等
的工作原理与谓词
相同,但输出总是函数
布尔值
使用1个输入,不返回任何内容(Consumer
)<代码>双消费者消耗2个输入。所以从理论上讲,可以有void
三角消费者
等
供应商
。供应商
不将任何内容(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.
}