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