这是一个非常简单的问题,但这里有人必须知道,所以这里有一个简单的方法让他们得到一些积分。
在Java 8中,java.util.function
包中有四类功能接口:Consumer
,Supplier
,Function
和Predicate
。 Function
将单个输入转换为单个输出。 Predicate
将输入转换为boolean
。
Consumer
和Supplier
中单个抽象方法的签名基本上是彼此相反的:
Consumer<T>
:
void accept(T t)
对于Supplier<T>
:
T get()
由于Consumer
接受输入并且不返回任何内容而Supplier
没有任何内容并返回值,因此他们感觉像是对立面。如果有人问我Consumer
的反面是什么,我的自然思想就像Producer
一样,就像生产者 - 消费者问题一样。
所以我的(诚然有点傻)问题是,Supplier
为什么不被称为Producer
?我错过了一个明显的原因吗?