गुमनाम आंतरिक कक्षाओं के विपरीत, जावा 8 लैम्बडास संलग्न (अभिभावक) वर्ग के संदर्भ नहीं रखता है। लैम्बडास के लिए एंड्रॉइड एन adds support।एंड्रॉइड एन जैक कंपाइलर में लैम्बडास कक्षा को संलग्न करने के संदर्भ रखते हैं?
हालांकि, वे लिंक राज्यों में नोट के रूप में, पिछली संगतता के लिए गुमनाम भीतरी वर्गों का उपयोग Jack
संकलक में लागू कर रहे हैं।
इसका मतलब यह संकलित एंड्रॉयड कक्षाओं में है कि lambdas जैक (और नहीं retrolambda) का उपयोग कर संलग्नित क्लास के लिए संदर्भ का आयोजन करेगा करता है?
मुझे पता है कि एक कारण है कि कई लोगों को उत्साहित थे lambdas के बारे में जब उन्हें प्रयोग Fragment
या Activity
लीक से बचने के लिए है, लेकिन एक सरसरी नज़र में, यह jack
संकलक का उपयोग कर कि लाभ नहीं देंगे तरह दिखता है।
संभावित डुप्लिकेट [क्या जावा 8 लैम्बडास अज्ञात वर्गों जैसे उनके संलग्न उदाहरण का संदर्भ बनाए रखता है?] (Http://stackoverflow.com/questions/28446626/do-java8-lambdas-maintain-a-reference-to-their -enclosing-उदाहरण की तरह-अनाम) –
@AndreClassen, उस सवाल का जैक को कवर नहीं करता है, लेकिन तुम सही हो, यह एक शिकार हो सकता है अगर retrolambda भी बाईटकोड स्तर पर गुमनाम भीतरी वर्गों के लिए lambdas decompiles। –
बीटीडब्ल्यू, आपकी धारणा है कि जावा 8 लैम्बडास कभी भी संलग्न उदाहरण का संदर्भ नहीं रखता है - वे निश्चित रूप से करते हैं यदि उन्हें आवृत्ति चर को कैप्चर करना है। –