से संरक्षित स्थिर जावा विधि को कॉल करना मेरे पास कुछ जावा कक्षाओं के साथ एक लाइब्रेरी है। एक वर्ग में कुछ protected static
विधियां हैं, जो मुझे एहसास है कि ओओपी नो-नो सॉर्ट है लेकिन मैं इसका कोड नहीं बदल सकता। मान लीजिए मेरे पास एक स्कैला क्लास है जो उपर्युक्त जावा क्लास को उप-वर्गीकृत करती है, मैं अपने संरक्षित स्थिर सदस्यों को कैसे कॉल कर सकता हूं?स्कैला
स्कैला
उत्तर
Frequently Asked Questions - Java Interoperability देखें:
यह स्काला के ज्ञात सीमा है: 'स्थिर' के सदस्यों स्काला में का बोध भी नहीं है। इसके बजाए, स्केल कक्षा वाई के स्थिर सदस्यों को सिंगलटन ऑब्जेक्ट वाई ( कक्षा वाई के साथी ऑब्जेक्ट) के सदस्य के रूप में मानता है। वर्ग Y का जब इस वर्ग से इनहेरिट, एक पहुँच ही संरक्षित कर सकते हैं सदस्यों लेकिन संरक्षित उपयोग नहीं कर सकते सदस्यों वस्तु Y के
कोई रास्ता नहीं स्काला अनुकरण कर सकते हैं नहीं है स्थिर स्काला के ऑब्जेक्ट मॉडल का अखंडता आई के बिना सुरक्षित मौलिक तरीके से, इसलिए यह बदलने के लिए नहीं जा रहा है। इस सीमा हल करने के लिए, एक जावा कोड जो समाहित सभी संरक्षित स्थिर भीतरी वर्ग के लिए पहुँचता साथ संलग्नित क्लास के कार्यान्वयन के लिए है।
अधिक जानकारी और सीमा और उसके वैकल्पिक हल की एक ठोस उदाहरण के लिए ticket #1806 देखें।
"अक्सर" पूछे जाने वाले प्रश्न इतने कम से कम पूछे जाते हैं कि कुछ लोग इसके अस्तित्व को देखते हैं। :-) –
हाहा, वास्तव में :) –
जेएफवाईआई, यह 2.10.0-एम 2 – OlegYch
क्या यह जावा सबक्लास बनाने का विकल्प नहीं है जो सुपर क्लास विधि को कॉल करता है? फिर आप अपनी जावा क्लास को स्कैला तक पहुंच सकते हैं। – Madoc
आह, हाँ, मुझे लगता है कि मैं उस मार्ग पर जा सकता हूं। धन्यवाद। थोड़ा अजीब लगता है कि यह सीधे संभव नहीं है! –
शायद स्कैला में यह संभवतः अधिक संभव है, मुझे नहीं पता। यही कारण है कि मैंने इसे एक टिप्पणी के रूप में पोस्ट किया और जवाब के रूप में नहीं। जाहिर है, एक "सुपर" कॉल काम नहीं कर सकता क्योंकि स्कैला की कोई स्थिर विरासत नहीं है। हो सकता है कि आप एक स्काला ऑब्जेक्ट बना सकें जो क्लास को प्रश्न में विस्तारित करता है और फिर "लाइब्रेरी क्लासनाम.स्टैटिक विधि नाम (...)" पर कॉल करता है, जिससे "सुपर" का उपयोग करने से परहेज किया जाता है? मुझे यकीन नहीं है कि यह काम करेगा। – Madoc