這個問題幾乎是一個重複: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