【发布时间】:2010-07-20 22:57:43
【问题描述】:
我正在玩序列化,并在从文件读回时遇到打字问题。
我目前的行动计划是使用文件名前缀来建议正确的类型,然后基于该类型进行反序列化。 (这很可能是一个“非常糟糕的主意”,因此任何其他建议都将不胜感激!)
本质上,我想将一个对象写入文件,然后稍后再将文件读回正确类型的对象。
以下是我想要使用的东西:
def readPatch(name:String): Patch = {
// split name at tilde, prefix gives type
val List(typeCode, filename) = List.fromString(name,'~')
val patchClass = typeCode match {
case "cfp" => CreateFilePatch.getClass
case "dfp" => DeleteFilePatch.getClass
case "cp" => ChangePatch.getClass
}
val inStream = new ObjectInputStream(new FileInputStream(filename))
inStream.readObject().asInstanceOf[patchClass]
}
但我认为由于类型不是对象而无法做到。尝试此代码时出现“未找到:键入 patchClass”的错误。
有人可以提出建议吗?
【问题讨论】:
标签: serialization scala types