繁体   English   中英

Scala:从文件读取序列化的对象

[英]Scala: Reading a serialized object from a file

我想从Scala中的文件读取序列化的对象,以恢复类似于Python的pickle的功能。 我破碎的对象读取代码如下所示:

def ReadObjectFromFile[A](filename: String): A = {
  val input = new ObjectInputStream(new FileInputStream(filename))
  val obj = input.readObject()
  obj match {
    case a: A => a
    case _ => sys.error("Type not what was expected when reading from file")
  }
}

但是,此代码导致警告“由于取消了删除,因此未检查类型模式A中的抽象类型A”。 正确的方法是什么?

您可以按照本博客文章中的描述使用隐式方法来消除类型擦除:

def ReadObjectFromFile[A](filename: String)(implicit m:scala.reflect.Manifest[A]): A = {
  val input = new ObjectInputStream(new FileInputStream(filename))
  val obj = input.readObject()
  obj match {
    case x if m.erasure.isInstance(x) => x.asInstanceOf[A]
    case _ => sys.error("Type not what was expected when reading from file")
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM