Como converter de java.util.Map para um mapa Scala

Uma API Java retorna umjava.util.Map<java.lang.String,java.lang.Boolean>. Eu gostaria de colocar isso em umMap[String,Boolean]

Então imagine que nós temos:

<code>var scalaMap : Map[String,Boolean] = Map.empty
val javaMap = new JavaClass().map()   // Returns java.util.Map<java.lang.String,java.lang.Boolean>
</code>

Você não pode fazerMap.empty ++ javaMap, porque o método ++ não sabe sobre mapas Java. Eu tentei:

<code>scalaMap = Map.empty ++ new collection.jcl.MapWrapper[String,Boolean] {
    override def underlying = javaMap
}
</code>

e:

<code>scalaMap = Map.empty ++ new collection.jcl.MapWrapper[java.lang.String,java.lang.Boolean] {
    override def underlying = javaMap
  }
</code>

Ambos não conseguem compilar, por causa dos genéricos -java.lang.String não é o mesmo que uma string scala.

Existe uma boa maneira de fazer isso, a não ser copiar o mapa manualmente?

EDIT: Obrigado, todas as boas respostas, aprendi muito com todos eles. No entanto, cometi um erro ao postar um problema mais simples do que aquele que realmente tenho. Então, se você me permite, eu vou generalizar a pergunta - O que a API realmente retorna é

<code>java.util.Map<java.lang.String, java.util.Map<SomeJavaEnum,java.lang.String>>
</code>

E preciso mover isso para Mapear [String, Mapear [SomeJavaEnum, String]]

Provavelmente não parece ser uma complicação muito grande, mas adiciona um nível extra de apagamento de tipos, e a única maneira que encontrei de mover isso para um mapa Scala foi copiá-lo em profundidade (usando algumas das técnicas que você sugeriu abaixo) . Alguém tem alguma dica? Eu meio que resolvi meu problema definindo uma conversão implícita para meus tipos exatos, então, pelo menos, a fealdade está escondida em sua própria característica, mas ainda parece um pouco desajeitada.

questionAnswers(4)

yourAnswerToTheQuestion