我有一个方法来序列化java地图Map<UUID,String>
。效果很好。我可以在java中序列化和反序列化。
但我必须从 scala 调用这个方法,这是我的调用代码。
def customSerialize:Unit = {
Serializer.serialize(modMap(scalaMap))
def modMap(oldMap : Map[UUID,SomeObject]) : java.util.Map[UUID,java.lang.String] = {
oldMap map { case(k,v) => (k->v.name)}
}
标量图是scala.collection.Map
我正在使用import scala.collection.JavaConversions._
用于进行转换。
当我运行此代码时,出现错误
java.io.NotSerializableException: scala.collection.JavaConversions$MapWrapper
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1180)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:346)
看起来我需要再进行一次转换javaconversions$MapWrapper
to java.util.Map
。它是否正确?有没有办法做到这一点?
据我所知,您确实需要复制地图,因为 MapWrapper 不可序列化。最好是 Scala 支持这一点,但与此同时,合理的语法就是使用 java Map 的复制构造函数。您的调用将如下所示:
Serializer.serialize(new java.util.HashMap(modMap(scalaMap)))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)