gpt4 book ai didi

scala - 二进制序列化 - 在 Scala 2.10 上替换 Marshal

转载 作者:行者123 更新时间:2023-12-04 16:10:02 25 4
gpt4 key购买 nike

由于不推荐使用 scala.util.Marshal,我如何将这个旧代码迁移到 scala 2.10?

object Serilaizer{
def objectToBytes[T](foo: T)(implicit expected: ClassManifest[T]): Array[Byte] = {
Marshal.dump(foo)
}
def bytesToObject[T](fooBytes: Array[Byte])(implicit expected: ClassManifest[T]): Option[T] = {
Some(Marshal.load[T](fooBytes))
}
}

我看到了 SBinary但它还没有发布。

最佳答案

到目前为止,这是实现 original Marshal dump/load 的想法。代码(如在 Scala 2.9 中),不确定这是最好的方法,但它似乎有效

object Serilaizer {
def objectToBytes[T](foo: T): Array[Byte] = { // replace Marshal.dump(foo)
val ba = new ByteArrayOutputStream()
val out = new ObjectOutputStream(ba)
out.writeObject(foo)
out.close()
ba.toByteArray
}

def bytesToObject[T](fooBytes: Array[Byte]): Option[T] = { // replace Marshal.load[T](foo)
if (userDataBytes != null) {
try {
val in = new ObjectInputStream(new ByteArrayInputStream(fooBytes))
val o = in.readObject.asInstanceOf[T]
in.close()
Some(o)
}
catch {
case e: Exception => {
throw new ClassCastException ("Serialization Problem", e)
None
}
}
}
else {
None
}
}
}

关于scala - 二进制序列化 - 在 Scala 2.10 上替换 Marshal,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22484765/

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