Je joue avec sérialisation et frapper un problème avec la saisie lors de la lecture de retour dans un fichier.Utiliser la valeur variable comme un type de Scala
Mon plan d'action actuel est d'utiliser un préfixe de nom de fichier pour suggérer le type correct, la base alors la désérialisation sur ce type. (Cela peut très bien être une "très mauvaise idée", donc toute suggestion serait reçue avec le plus de gratitude!)
Essentiellement, je veux écrire un objet dans un fichier, puis, plus tard, lire le fichier dans un objet du type correct.
Voici quelque chose comme ce que je veux utiliser:
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]
}
mais je pense ne suis pas en mesure de types en raison de ne pas être objets. Je reçois une erreur de type « Introuvable: le type patchClass » lorsque vous essayez ce code.
Quelqu'un pourrait-il suggérer des idées?
Nice, qui fonctionne! Je ne suis pas sûr que je suis aborder le problème de la meilleure façon, mais pour l'instant ça va faire; Merci! – owst