2012-02-13 13 views
5

मौजूदा आंतरिक वर्ग में क्या गलत है, आंतरिक वर्ग को बंद करने का प्रतिनिधित्व करने के लिए क्यों उपयोग नहीं किया जा सकता है?जेडीके 1.8 के बंद होने का परिचय - परियोजना लैम्ब्डा

वर्तमान में मैं से शुरू करने के लिए यहां कुछ संसाधन पोस्ट करूंगा।

सबसे पहले, नीचे दिखाया गया है कि बंद होने का क्या शानदार अवलोकन है। यह भाषा अज्ञेयवादी है। मैं इसे बंद http://martinfowler.com/bliki/Closure.html

लैम्ब्डा का एक सा जोड़ा बाद में

[जनवरी 2007] क्लोजर की एक परिभाषा http://gafter.blogspot.com/2007/01/definition-of-closures.html

अंत

[दिसंबर 2011] राज्य को पढ़ने के लिए सलाह देते हैं http://cr.openjdk.java.net/~briangoetz/lambda/lambda-state-4.html

[अक्टूबर, 2007] उन्नत विषय प्रोग्रामिंग भाषाओं में: जावा http://www.youtube.com/watch?v=0zVizaCOhME के लिए क्लोजर

[जनवरी 4, 2011] JSR 292 अच्छाई: लैम्ब्डा सैम प्रकार रूपांतरण के लिए invokedynamic http://weblogs.java.net/blog/forax/archive/2011/01/04/jsr-292-goodness-lambda-sam-type-conversion-using-invokedynamic

+0

यह सामान्य प्रश्न पूछने या सामान्य जानकारी पोस्ट करने के लिए एक जगह नहीं है। एसओ के दिशानिर्देशों का एक बहुत ही विशिष्ट सेट है, और आपकी पोस्ट उनमें से कई का उल्लंघन करती है। कृपया [faq] और [पूछें] पढ़ें। –

+0

कृपया http://stackoverflow.com/questions/36636/what-is-a-closure पर देखें यह अधिक सामान्य प्रश्न है। – alexsmail

+1

@ जिम गारिसन, मैं quesion के दायरे को कम करता है। मुझे उम्मीद है कि यह ठीक है। – alexsmail

उत्तर

0

भीतरी वर्गों का उपयोग चीजों को बंद कर सकते हैं के कई करने के लिए इस्तेमाल किया जा सकता तुम्हारे लिए।

क्लोजर के दो प्रमुख फायदे हैं, वे सरल और अधिक संक्षिप्त अर्थ हैं जिनका उपयोग करने की अधिक संभावना है। वे भाषा से बेहतर समझते हैं और इन तरीकों से अनुकूलित किया जा सकता है कि आंतरिक कक्षाएं नहीं हैं। जैसे विशिष्ट अपवादों का बेहतर प्रबंधन, प्राइमेटिव्स का संचालन।

क्लोजर का उपयोग अन्य प्रथम श्रेणी के तरीकों के निर्माण के लिए किया जा सकता है उदा। करी के माध्यम से। मुझे यकीन नहीं है कि यह एक बहुत फायदा है लेकिन यह निश्चित रूप से नेस्टेड कक्षाओं के साथ एक साधारण विकल्प नहीं है। क्योंकि गंभीरता से, भीतरी वर्ग वाक्यविन्यास एक विशाल वाक्यात्मक भूमि के ऊपर है -

+0

मैंने सोचा कि वे आंतरिक कक्षाओं के आसपास सिंटैक्टिकल चीनी थे (अच्छी तरह से और टाइप सिस्टम के लिए कुछ पुनर्विक्रय), यानी हमारे साथ सभी समान सीमाएं अभी भी लागू होती हैं? – Voo

+0

कृपया लिंक http://weblogs.java.net/blog/forax/archive/2011/01/04/jsr-292-goodness-lambda-sam-type-conversion-using-invokedynamic लिंक से परामर्श लें।जावा में बंद होने का मौजूदा सुझाव _implementation_ आंतरिक वर्ग का उपयोग करना है और विधिहेंडल नहीं है। – alexsmail

+0

@Voo अगर आप मंचों को पढ़ना शुरू करते हैं तो आप देखेंगे कि बहुत से लोग हैं जिन्होंने कहा है कि यह भाषा में _fundemantal_ परिवर्तन है और सिंटैक्टिकल चीनी नहीं है और मैं इसे देखता हूं। उदाहरण के लिए ऊपर दिए गए लिंक http://www.youtube.com/watch?v=0zVizaCOhME पर देखें। – alexsmail

3

के रूप में मैं इसे समझ लिया है, जावा 8 में बंद के लिए योजना यह भीतरी वर्गों के साथ मौजूदा समाधान की तुलना में एक दर्द के कम करने के लिए बस है सरल lambdas लिखने के लिए।

+0

तो, यह केवल "वाक्य रचनात्मक चीनी" है? :-) – alexsmail

+0

मैंने सोचा था कि यह था। क्या यह? –

+1

जो मैंने सोचा था। जब तक मुझे 'मेथडहैंडल' नहीं मिला। और बंद करने और बल बंद करने के कार्यान्वयन स्विचिंग। अब, मैं उलझन में हूँ। – alexsmail

संबंधित मुद्दे