我正在玩序列化,並在從文件中讀回時遇到打字問題。使用變量值作爲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