आप को स्कैला StringBuilder
के साथ प्रारंभ नहीं कर सकते हैं और फिर जावा संस्करण प्राप्त कर सकते हैं। हालांकि, आप स्कैला संस्करण में java.lang.StringBuilder
लपेट सकते हैं। तो:
val jsb = new java.lang.StringBuilder();
val sb = new StringBuilder(jsb);
// Do Scala-y stuff with sb
JCommander.whatever.usage(jsb);
// Do more Scala-y stuff
के बाद से - कोई गारंटी नहीं होती, लेकिन सच व्यवहार में अभी (2.8, 2.9) - स्काला आवरण किसी भी राज्य (बजाय सिर्फ जावा संस्करण के संदर्भ में) की दुकान नहीं है, तो आप ' मिश्रण और दो के उपयोग से मेल खाने के लिए सुरक्षित हैं।
स्रोत
2011-06-01 16:03:15
असल में, मुझे नहीं लगता कि यह काम करेगा। मुझे लगता है कि किसी भी जावा विधि की अपेक्षा है कि 'java.lang.StringBuilder' इसे संशोधित करने की अपेक्षा करता है और कॉलर को उन परिवर्तनों तक पहुंच की अनुमति देता है। आपके द्वारा दिखाए गए 'निहित' विधि 'scala.collection.mutable.StringBuilder' की "रक्षात्मक" प्रतिलिपि बनाता है। कॉल किए गए विधि में कोई भी परिवर्तन ** नहीं ** ** scala.collection.mutable.StringBuilder' में दिखाई देगा। अब जब मैं इसके बारे में सोचता हूं, तो इसे लागू करने का एकमात्र तरीका यह है कि यदि 'scala.collection.mutable.StringBuilder' विस्तारित या लपेटा गया है' java.lang.StringBuilder'। – Ralph