这个问题几乎是一个重复:Scala can't multiply java Doubles? - 你可以看看my answer为好,因为这个想法是相似的。
作为Eastsun已经暗示,答案是从java.lang.Integer
一个隐式转换(基本上是盒装int
原语)到scala.Int
,它是代表原始JVM整数Scala的方式。
implicit def javaToScalaInt(d: java.lang.Integer) = d.intValue
而且互操作性已经实现了 - 您所编写的代码应该编译得很好!而使用scala.Int
的代码,其中java.lang.Integer
需要似乎工作得很好,因为自动装箱。所以下面的工作:
def foo(d: java.lang.Integer) = println(d)
val z: scala.Int = 1
foo(z)
而且,michaelkebe说,不使用Integer
类型 - 这实际上是scala.Predef.Integer
速记,因为它已被弃用,最有可能会在斯卡拉2.8被删除。
编辑:糟糕...忘了回答原因。您得到的错误可能是scala.Predef.Integer
试图模仿Java的语法糖,其中a + "my String"
表示字符串连接,a
是int
。因此,scala.Predef.Integer
类型中的+
方法只执行字符串连接(期望String
类型)并且没有自然整数加法。
- Flaviu Cipcigan