我試圖閱讀新的java.util.function
Consumer
,Supplier
和Function
。爲什麼我們需要Java 8中的消費者和供應商功能?
我不明白爲什麼我們需要他們,這是什麼問題,他們解決了什麼問題?
請給我一個沒有這些API和新API的使用示例,並解決了什麼問題?
我試圖閱讀新的java.util.function
Consumer
,Supplier
和Function
。爲什麼我們需要Java 8中的消費者和供應商功能?
我不明白爲什麼我們需要他們,這是什麼問題,他們解決了什麼問題?
請給我一個沒有這些API和新API的使用示例,並解決了什麼問題?
也許你認爲他們必須比他們更復雜。
它們被設計成超級簡單的代碼片段,它們本身並沒有太多的功能,但是您可以將代碼片段傳遞給可以使用這些代碼片段的庫。
這個例子打印使用供應商和消費者
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);
對不起,但我不明白在這個例子中供應商和消費者是如何解釋 – user1365697
@ user1365697「供應商」解決了當你需要能夠告訴圖書館如何根據需要創建對象和消費者'解決了告訴圖書館關於你想要爲每個對象執行的動作的問題。 –
如果我不使用供應商和消費者該怎麼樣看起來像?在這個例子中,你沒有使用它們,所以我有點困惑 – user1365697
你的意思是2個接口'Consumer'和'Supplier'?如果是這樣,你讀了他們的JavaDocs嗎?你讀過關於lambda的文章嗎? – Thomas
是的,我的意思是2接口消費者和供應商我閱讀javadocs,但我不明白他們爲什麼解決 – user1365697
他們是常見的[功能接口](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