[英]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.