Wednesday 15 September 2010

java - Can I not map/flatMap an OptionalInt? -


क्यों नहीं लगता है map () / flatMap () वैकल्पिक या अन्य आदिम वैकल्पिक flavors पर तरीकों?

स्ट्रीम () मानचित्र ऑपरेशन वस्तुओं और primitives के बीच रूपांतरण अनुमति देते हैं लेकिन वैकल्पिक क्यों इसका फायदा नहीं उठाता है?

  वैकल्पिकआईआईटी प्रोफाइलआईडी = वैकल्पिकइं। (124); वैकल्पिक & LT; प्रोफाइल & gt; प्रोफ़ाइल = प्रोफाइल आईडी.मैप (आई - & gt; मिल प्रोफाइल (i)); // कोई ऐसा वैध मानचित्र () विधि नहीं है!  

आदिम विकल्प का नक्शा नहीं है, फ्लैटमैप और फ़िल्टर विधियां डिजाइन द्वारा।

इसके अलावा, आपको उनका उपयोग नहीं करना चाहिए। धाराओं पर आदिम उपयोग के औचित्य प्रदर्शन के कारण हैं। बड़ी संख्या में तत्वों के मामले में मुक्केबाजी / अनबॉक्सिंग ओवरहेड महत्वपूर्ण है। लेकिन यह मूर्खतापूर्ण है क्योंकि वैकल्पिक में केवल एक ही तत्व है।

इसके अलावा, उदाहरण पर विचार करें:

  सार्वजनिक वर्ग फू {सार्वजनिक वैकल्पिक & lt; पूर्णांक & gt; कुछ विधि () वैकल्पिक विकल्प (42); }}  

और विधि संदर्भ के रूप में उपयोग:

  .stream () .map (Foo :: someMethod)  
< P> यदि आप कुछ प्रकार के रिटर्न प्रकार को OptionalInt के लिए बदलते हैं:

  सार्वजनिक वैकल्पिक कुछ विधि () {OptionalInt.of (42); }  

आप इसे विधि संदर्भ के रूप में नहीं उपयोग कर सकते हैं और कोड पर संकलित नहीं होगा:

  .map (Foo :: someMethod)   

1 comment: