我正在玩序列化,并在从文件中读回时遇到打字问题。使用变量值作为Scala中的一个类型
我目前的行动计划是使用文件名前缀来建议正确的类型,然后将反序列化基于该类型。 (这可能是一个“非常糟糕的想法”,所以任何建议,否则将非常感激地收到!)
本质上,我想写一个对象到一个文件,然后,在稍后的某个时候,读取文件回进入正确类型的对象。
下面是什么像什么,我想用:
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”错误。
任何人都可以提出想法吗?
不错,有效! 我不确定我是否以最好的方式接近这个问题,但现在这样做;谢谢! – owst 2010-07-20 23:45:36