यह शायद एक बहुत ही नोबिश सवाल है, लेकिन मैं स्कैला/जावा इंटरैक्शन के साथ थोड़ा सा खेल रहा था, और सोच रहा था कि टुपल्स कितनी अच्छी तरह से खेलते थे।जावा में स्कैला टुपल प्रकार अनुमान
अब, मुझे पता है कि (Type1, Type2)
वाक्य रचना Tuple2<Type1, Type2>
के लिए केवल वाक्यात्मक चीनी है, और इसलिए, जब एक स्काला विधि है कि एक सादे जावा वर्ग में एक Tuple2 रिटर्न बुला, मैं Tuple2<Type1, Type2>
स्पष्टता के लिए, मेरी स्काला कोड:
def testTuple:(Int,Int) = (0,1)
जावा कोड:
Tuple2<Object,Object> objectObjectTuple2 = Test.testTuple();
ऐसा लगता है संकलक थी उम्मीद पैरामीटर प्रकार <Object,Object>
के बजाय, मेरे मामले में, <Integer,Integer>
(यह वही है जो मैं अपेक्षा कर रहा था)।
क्या मेरी सोच गहराई से त्रुटिपूर्ण है और क्या इसके लिए एक बिल्कुल उचित स्पष्टीकरण है?
या
मेरे स्काला कोड में एक समस्या है, और वहाँ मामलों है कि मैं जानता हूँ कि जावा कोड के लिए एक API प्रदान करेगा में और अधिक ... स्पष्ट होने का एक तरीका है,?
या
क्या यह केवल एक सीमा है?
तो, 'Int' सामान्य स्कैला वर्ग नहीं है? (यदि ऐसा होगा, तो 'Int' संस्करण को' scalaTuple2 'या कुछ समान, संकलित किया जाना चाहिए था? –
aioobe
सही। [स्केलडॉक्स] से (http://www.scala-lang.org/api/current/scala/Int.html): "' Int' मूल्य वर्गों का सदस्य है, जिनके उदाहरण वस्तुओं के रूप में प्रदर्शित नहीं होते हैं अंतर्निहित मेजबान प्रणाली। " [एकीकृत प्रकारों का वर्णन करने वाला पृष्ठ] (http://docs.scala-lang.org/tutorials/tour/unified_types.html) इसे बेहतर समझा सकता है। – leedm777
ग्रेट उत्तर @ डेव, धन्यवाद, यह सही समझ में आता है क्योंकि इंट को जादुई रूप से जावा क्लास में अनुवादित नहीं किया जा सकता है, मुझे लगता है कि इसे इंटीजर में अनुवादित किया जाएगा। – pcalcao