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

Scala:从文件中读取序列化对象,scala,serialization,type-erasure,Scala,Serialization,Type Erasure,我想从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 ca

我想从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未选中,因为它已通过擦除消除”。执行此操作的正确方法是什么?

您可以使用implicits绕过类型擦除,如中所述:


您可以使用IMPLITS绕过类型擦除,如中所述:


博客帖子链接已失效并导致垃圾邮件。博客帖子链接已失效并导致垃圾邮件。
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")
  }
}