この質問はほとんどの複製である:Scala can't multiply java Doubles? - アイデアは類似しているとして、あなたは、同様my answerで見ることができます。
Eastsun
が既に示唆したように、その答えは、(基本的にプリミティブ箱入りint
)java.lang.Integer
からJVMプリミティブ整数を表すScalaの方法であるscala.Int
へ暗黙変換あります。
implicit def javaToScalaInt(d: java.lang.Integer) = d.intValue
相互運用性が達成されました。コードをコンパイルしても問題ありません。そしてjava.lang.Integer
が必要なscala.Int
を使用するコードは、オートボックスのためうまく動作するようです。したがって、次の作品:また
def foo(d: java.lang.Integer) = println(d)
val z: scala.Int = 1
foo(z)
、michaelkebeはInteger
タイプを使用していない、言ったように - それが廃止されており、おそらくScalaの2.8で削除されようとしているとして、実際にscala.Predef.Integer
の省略形です。
EDIT:理由を答えるのを忘れました。あなたが得るエラーはおそらくscala.Predef.Integer
がa + "my String"
が文字列連結を意味するJavaの構文的な砂糖を模倣しようとしたことでしょう。a
はint
です。したがって、scala.Predef.Integer
タイプの+
メソッドは、文字列の連結(String
を予期)のみを行い、自然な整数の加算は行いません。
- Flaviu Cipcigan