代わりにこれを使用してください:
"%d".format(2)
このString.formatメソッドは Java のものであるため、 のサブタイプである入力パラメータが必要ですjava.lang.Object。ScalaIntはjava.lang.Object:ではありません。
scala> val i: java.lang.Object = 2
<console>:7: error: type mismatch;
found : Int(2)
required: java.lang.Object
Note: an implicit exists from scala.Int => java.lang.Integer, but
methods inherited from Object are rendered ambiguous. This is to avoid
a blanket implicit which would convert any scala.Int to any AnyRef.
You may wish to use a type ascription: `x: java.lang.Integer`.
val i: java.lang.Object = 2
^
AnyValこれについてもっと学ぶには、Scala のと型の区別を読んでくださいAnyRef。IntegerJava では、効率のためにオブジェクト ( など) とプリミティブ ( など) を区別していintます。Scala にも同様の違いがあります。すべての型は から拡張されAnyますが、「値型」(基本的にプリミティブに対応する) は から拡張されAnyVal、他のすべてはAnyRef(基本的にjava.lang.Object) から拡張されます。詳細はこちらをご覧ください。
したがって、使用するには、次String.formatの Java に置き換える必要がありIntegerますObject。
String.format("%d", new java.lang.Integer(2))
ただし、これは行わないでください。上記のように、Scala の方法で使用してください。