2011-08-23 20 views
13

जावा में, पैकेज-निजी इंटरफेस बनाना संभव है। उन्हें जावप के साथ देखकर, आप देखते हैं कि उन्हें "सार्वजनिक" दृश्यता की कमी है।स्कैला में आप पैकेज-निजी * विशेषता * को कैसे परिभाषित करते हैं?

स्कैला में, आप निजी [पैकेज] या संरक्षित [पैकेज] के रूप में एक विशेषता घोषित कर सकते हैं, लेकिन जावप के साथ देखकर, यह अभी भी सार्वजनिक है।

तो आप स्कैला में पैकेज-निजी विशेषता कैसे बनाते हैं?

जबकि स्कैला कंपाइलर दृश्यता का सम्मान करता है, मेरी समस्या यह है कि मेरी एपीआई शायद जावा से भी एक्सेस की जाएगी, और मैं जावा में अपने आंतरिक कार्यान्वयन का खुलासा नहीं करना चाहता हूं।

उत्तर

10

स्कैला का उपयोग कर जावा पैकेज निजी संशोधक बनाना संभव नहीं है। हालांकि आप स्कैला प्रोजेक्ट में जावा और स्कैला फ़ाइलों को स्वतंत्र रूप से मिश्रित कर सकते हैं। तो सबसे आसान समाधान जावा क्लास/इंटरफ़ेस बनाना है और फिर इसे स्कैला में विस्तारित करना है।

+0

जबकि जॉन का जवाब अधिक "शैक्षणिक" था, आपने एक समाधान प्रदान किया है, शायद एकमात्र। चूंकि अधिकांश स्कैला परियोजनाओं को भी जावा संकलित करने के लिए कॉन्फ़िगर किया गया है, यह उचित है। –

13

मेरा मानना ​​है कि इस

http://www.scala-lang.org/node/10488

निजी दोनों स्काला और जावा की भाषा चश्मा में एक आसानी से विशेष दर्जा प्राप्त है आपके सवाल का जवाब है। एसएलएस के संशोधक अनुभाग में निजी बनाम योग्य निजी की चर्चा देखें। संक्षेप में, निजी जावा निजी के समान ही है, जबकि निजी [foo] बाइटकोड में निजी चिह्नित नहीं है, लेकिन इसमें केवल संकलन-समय पहुंच जांच शामिल है।

मुझे विश्वास नहीं है कि बाइटकोड में संकलित होने के बाद आप वास्तव में एक विशेषता पैकेज निजी बना सकते हैं।

+0

आपके लिंक में, मार्टिन ओडरस्की खुद कहता है: "संक्षेप में, निजी जावा के समान ही निजी है, जबकि निजी [foo] बाइटकोड में निजी नहीं है, लेकिन इसमें केवल संकलन-समय पहुंच जांच शामिल है।" जो स्पष्ट रूप से जवाप से देखे गए साक्ष्य के विरोधाभास में है, लेकिन मुझे लगता है कि वह कक्षाओं/लक्षणों के बजाय इस मामले में सदस्यों, रचनाकारों के बारे में बात कर रहा था। –

+0

@ सेबेस्टियन - काफी मेला। मैंने ध्यान नहीं दिया कि सभी इंटरफ़ेस सार्वजनिक इंटरफ़ेस में संकलित हैं। भले ही, मुझे लगता है कि यदि आप जावा से अपने गुणों को सुलभ करना चाहते हैं तो लेक्स का समाधान सबसे अच्छा है। –