簡體   English   中英

Scala無法識別要調用的方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM