11
這可能是一個非常不好的問題,但我在玩Scala/Java的交互,並且想知道Tuples的發揮如何。Java中的Scala元組類型推斷
現在,我知道(Type1, Type2)
語法只是語法糖Tuple2<Type1, Type2>
,因此,調用Scala的方法,在一個普通的Java類返回Tuple2的時候,我期待得到Tuple2<Type1, Type2>
爲了清楚起見,我的Scala代碼:
def testTuple:(Int,Int) = (0,1)
Java代碼:
Tuple2<Object,Object> objectObjectTuple2 = Test.testTuple();
看來編譯器期望THI s是參數化類型<Object,Object>
,而不是在我的情況下,<Integer,Integer>
(這是我期望的,至少)。
我的想法是否有深刻的缺陷,對此有一個完全合理的解釋嗎?
OR
有沒有在我的Scala代碼的問題,而且也被更多...明確的一個方式,我知道將提供Java代碼的API的案件?
或
這是一個簡單的限制嗎?
因此,'Int'不是普通的Scala類嗎? (如果是,那麼'Int'版本應該被編譯成'scalaTuple2'或類似的東西,不是嗎?) –
aioobe
2012-04-20 14:56:19
正確。從[scaladocs](http://www.scala-lang.org/api/current/scala/Int.html):「'Int'是值類的成員,那些實例未被表示爲對象的元素底層的主機系統「。 [描述統一類型的頁面](http://docs.scala-lang.org/tutorials/tour/unified_types.html)可能會更好地解釋它。 – leedm777 2012-04-20 14:58:47
偉大的答案@dave,謝謝,這是非常有道理的,因爲Int不能被神奇地轉換成Java類,我假設它會被轉換爲Integer。 – pcalcao 2012-04-20 15:01:34