2016-07-26 84 views
-3

我试图阅读新的java.util.functionConsumer,SupplierFunction为什么我们需要Java 8中的消费者和供应商功能?

我不明白为什么我们需要他们,这是什么问题,他们解决了什么问题?

请给我一个没有这些API和新API的使用示例,并解决了什么问题?

+3

你的意思是2个接口'Consumer'和'Supplier'?如果是这样,你读了他们的JavaDocs吗?你读过关于lambda的文章吗? – Thomas

+0

是的,我的意思是2接口消费者和供应商我阅读javadocs,但我不明白他们为什么解决 – user1365697

+3

他们是常见的[功能接口](http://docs.oracle.com/javase/8/docs/api/java /util/function/package-summary.html#package.description)旨在用作[lambda表达式]的目标(https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html)。 – Jesper

回答

3

也许你认为他们必须比他们更复杂。

它们被设计成超级简单的代码片段,它们本身并没有太多的功能,但是您可以将代码片段传递给可以使用这些代码片段的库。

这个例子打印使用供应商和消费者

Stream.generate(UUID::random) // <<< Supplier<UUID> 
     .limit(100) 
     .forEach(System.out::println); // <<< Consumer<UUID> 

100点的UUID较长的例子是

Supplier<UUID> uuidSupplier = UUID::random; 
Consumer<UUID> uuidConsumer = System.out::println; 
Stream.generate(uuidSupplier) 
     .limit(100) 
     .forEach(uuidConsumer); 
+0

对不起,但我不明白在这个例子中供应商和消费者是如何解释 – user1365697

+2

@ user1365697“供应商”解决了当你需要能够告诉图书馆如何根据需要创建对象和消费者'解决了告诉图书馆关于你想要为每个对象执行的动作的问题。 –

+0

如果我不使用供应商和消费者该怎么样看起来像?在这个例子中,你没有使用它们,所以我有点困惑 – user1365697