I have two files. One is scala and other is java.
Scala file has a function which returns scala immutable map.
Java file wants to use that map as dictionary.
Use the static forwarders from Java. In Scala 2.13 the API is simplified, with overloaded asJava
for conversion to Java:
$ javap -cp ~/scala-2.13.0/lib/scala-library.jar scala.jdk.javaapi.CollectionConverters
Compiled from "CollectionConverters.scala"
public final class scala.jdk.javaapi.CollectionConverters {
public static scala.collection.mutable.Map asScala(java.util.Properties);
public static scala.collection.mutable.Map asScala(java.util.Dictionary);
public static scala.collection.concurrent.Map asScala(java.util.concurrent.ConcurrentMap);
public static scala.collection.mutable.Map asScala(java.util.Map);
public static scala.collection.mutable.Set asScala(java.util.Set);
public static scala.collection.mutable.Buffer asScala(java.util.List);
public static scala.collection.Iterable asScala(java.util.Collection);
public static scala.collection.Iterable asScala(java.lang.Iterable);
public static scala.collection.Iterator asScala(java.util.Enumeration);
public static scala.collection.Iterator asScala(java.util.Iterator);
public static java.util.concurrent.ConcurrentMap asJava(scala.collection.concurrent.Map);
public static java.util.Map asJava(scala.collection.Map);
public static java.util.Dictionary asJavaDictionary(scala.collection.mutable.Map);
public static java.util.Map asJava(scala.collection.mutable.Map);
public static java.util.Set asJava(scala.collection.Set);
public static java.util.Set asJava(scala.collection.mutable.Set);
public static java.util.List asJava(scala.collection.Seq);
public static java.util.List asJava(scala.collection.mutable.Seq);
public static java.util.List asJava(scala.collection.mutable.Buffer);
public static java.util.Collection asJavaCollection(scala.collection.Iterable);
public static java.lang.Iterable asJava(scala.collection.Iterable);
public static java.util.Enumeration asJavaEnumeration(scala.collection.Iterator);
public static java.util.Iterator asJava(scala.collection.Iterator);
}
Given a Scala class that returns a Scala Map:
$ jshell --class-path .:~/scala-2.13.0/lib/scala-library.jar
| Welcome to JShell -- Version 11.0.3
| For an introduction type: /help intro
jshell> Map vs = scala.jdk.javaapi.CollectionConverters.asJava(new mytools.MapMaker().m())
vs ==> {greeting=hi, reply=bye}