[英]How do make the JVM recognize a scala.Array[T] as a java array T[] in a polymorphic method call?
[英]Scala can't recognize which method to call
我想在Scala控制台中運行一些Java。 這是我得到的:
scala> String.format("hello %d",3);
<console>:8: error: overloaded method value format with alternatives:
(java.util.Locale,java.lang.String,<repeated...>[java.lang.Object])java.lang.String <and>
(java.lang.String,<repeated...>[java.lang.Object])java.lang.String
cannot be applied to (java.lang.String, Int)
String.format("hello %d",3);
為什么Scala無法識別調用哪個方法,如果參數集不同,我提供的方法是非常明確的?
奇怪的是,當我嘗試使用與兩個參數集中的任何一個都不匹配的參數調用函數時,也出現相同的消息,例如String.format()
我使用的是scala 2.9.1
您的參數與函數原型不匹配。 你用第二個參數scala.Int
調用函數,它不是java.lang.Object
。
將它轉換為java.lang.Integer
,它將工作。
另請參閱Scala中的裝箱和拆箱 。
我建議使用Scala 2.10.X中提供的新String插補器。 它們更容易使用。
val x = 3
String.format("hello %d", x: Integer)
簡單地說:
val x =3
s"hello $x"
嘗試
String.format("hello %d",3.asInstanceOf[java.lang.Object]);
另外,你可以讓Scala為你做拳擊:
String.format("hello %d", 3: Integer)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.