यह सवाल लगभग का डुप्लिकेट है: Scala can't multiply java Doubles? - आप के रूप में अच्छी my answer देख सकते हैं, के रूप में विचार समान है। Eastsun पहले से ही संकेत दिया
के रूप में, इस सवाल का जवाब एक java.lang.Integer
से एक अंतर्निहित रूपांतरण (मूल रूप से एक बॉक्सिंग int
आदिम) एक scala.Int
है, जो JVM आदिम पूर्णांकों का प्रतिनिधित्व करने के स्काला तरीका है।
implicit def javaToScalaInt(d: java.lang.Integer) = d.intValue
और इंटरऑपरेबिलिटी हासिल की गई है - आपके द्वारा दिए गए कोड को ठीक से संकलित करना चाहिए! और कोड जो scala.Int
का उपयोग करता है जहां java.lang.Integer
की आवश्यकता है ऑटोबॉक्सिंग के कारण ठीक काम करने लगता है। तो निम्न कार्य: - जो वास्तव में scala.Predef.Integer
के लिए आशुलिपि है के रूप में यह अब मान्य नहीं है और सबसे शायद स्काला 2.8 में हटाया जा रहा है
def foo(d: java.lang.Integer) = println(d)
val z: scala.Int = 1
foo(z)
इसके अलावा, जैसा michaelkebe कहा, Integer
प्रकार का उपयोग नहीं करते।
संपादित करें: ओह ... क्यों जवाब देना भूल गया। आपको जो त्रुटि मिलती है वह शायद scala.Predef.Integer
ने जावा की सिंटैक्टिक चीनी की नकल करने की कोशिश की जहां a + "my String"
का अर्थ है स्ट्रिंग कॉन्सटेनेशन, a
int
है। इसलिए +
विधि scala.Predef.Integer
प्रकार में केवल स्ट्रिंग कॉन्सटेनेशन (String
प्रकार की अपेक्षा) और कोई प्राकृतिक पूर्णांक अतिरिक्त नहीं है।
- फ्लवियू सिपसिगन
स्रोत
2009-10-14 15:49:21