2016-11-11 7 views
1

それは私には非常に奇妙に見えます。私はそれがどのように動作するのか分からなかった。次の例を考えてみましょう:import importを追加した後、なぜasJavaを呼び出すことができますか?scala.collection.JavaConverters._

val m = Map("s" -> "s") 
val jm : java.util.Map[String, String] = m.asJava // error 
import scala.collection.JavaConverters._ 
val jm : java.util.Map[String, String] = m.asJava //fine 

実際scala.collection.convert.Decorators::AsJava[A](op: => A)で定義されているasJava方法。 ScalaMapでどのように呼び出すことができますか?

答えて

4

ここにはimplicit conversionがあります。あなたはthe codeを見れば、あなたが見ることができます:

implicit def mapAsJavaMapConverter[A, B](m : Map[A, B]): AsJava[ju.Map[A, B]] = 
    new AsJava(mapAsJavaMap(m)) 

はそうコンパイラが上記経由で Mapをラップされ、そして上記 asJava()方法を提供します

関連する問題