我有一個序列化java映射Map<UUID,String>
的方法。它工作正常。我可以在java中序列化和反序列化。嘗試序列化從scala轉換的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
到java.util.Map
。它是否正確?有沒有辦法做到這一點?
現在我在我的java代碼中添加一個額外的轉換方法,我遍歷scala提供的Map並創建一個新的Java Map。我希望有更好的方法來做到這一點。 –
這仍然是一個問題,所以我打開了一個問題:https://issues.scala-lang.org/browse/SI-8911 –