MongoIterable.forEach
को Block
की आवश्यकता है जो जावा 8 Consumer
के समान है। वे काफी समान समस्याओं के कारण कर रहे हैं, उदाहरण के लिए, निम्नलिखित संकलन नहीं करता है:MongoIterable.forEach बनाम Iterable.forEach
MongoIterable<Document> result = collection.find(...);
result.forEach(System.out::println);
क्योंकि संकलक Iterable.forEach(Consumer)
और MongoIterable.forEach(Block)
के बीच तय नहीं कर सकते। फिक्सिंग यह स्पष्ट रूप से पैरामीटर टाइपिंग की तरह समाधान की आवश्यकता है:
Block<Document> printer = System.out::println;
result.forEach(printer);
या वैकल्पिक रूप से, एक सादे Stream
रूप MongoIterable
इलाज:
StreamSupport.stream(result.spliterator(), false).forEach(System.out::println);
क्यों MongoIterable.forEach
Consumer
इंटरफ़ेस का उपयोग कर परिभाषित नहीं है, कुछ की तरह: MongoIterable.forEach(Consumer<? super TResult> consumer)
? इससे भी बेहतर - MongoIterable
में क्यों है?
यह बताता है कि उपभोक्ता का उपयोग क्यों नहीं किया जाता है, लेकिन मैं अभी भी स्पष्ट नहीं हूं कि मोंगोइटेबल क्यों है। पहले स्थान पर। क्या यह गैर जावा 8 उपयोगकर्ताओं को जावा 8 अनुभव पसंद है? –
इसका उद्देश्य इसे और अधिक अनुकूल बनाना था। जूरी अभी भी बाहर है अगर वह लक्ष्य हासिल किया गया था या नहीं। – evanchooly
नाम वर्ग से बचने के लिए एक अलग नाम होना अच्छा होगा, जैसे 'forEachMongo' (या शायद यहां तक कि कूलर नाम?)। सौभाग्य से एक साधारण प्रकार का कलाकार इस मुद्दे को हल करता है। –