gpt4 book ai didi

java - 尝试序列化从 scala 转换的 java 映射时出现不可序列化异常

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:01:02 24 4
gpt4 key购买 nike

我有一个序列化 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 映射是 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 .它是否正确?有办法做到这一点吗?

最佳答案

据我所知,您确实需要复制 map ,因为 MapWrapper 不可序列化。 Scala 最好支持这一点,但与此同时,合理的语法只是使用 java Map 的复制构造函数。您的电话将如下所示:

Serializer.serialize(new java.util.HashMap(modMap(scalaMap)))

关于java - 尝试序列化从 scala 转换的 java 映射时出现不可序列化异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6780206/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com