Ich würde gerne Scala Beizen verwenden, um binäre Darstellung einer Fallklasse zu speichern.Scala Beizen Fall Klasse Versionierung
Ich möchte wissen, ob es einen Weg gibt, Versionierung von Fallklasse zu verwalten (die Art und Weise Protokollpuffer erlaubt zu tun)
Hier ist mein Beispiel
Ich mache ein Programm bei bestimmte Datum, mit der folgenden Fall Klasse
case class MessageTest(a:String,b:String)
Dann serialisiert ich eine Instanz dieser Klasse
import scala.pickling._
import binary._
val bytes=MessageTest("1","2").pickle
Und dann speichere ich das Ergebnis in eine Datei
Später könnte ich jetzt Evolution auf meinem Fall Klasse machen müssen, ein neues optionales Feld
case class MessageTest (a:String,b:String,c:Option[String]=None)
ich hinzufügen Ich möchte die Daten, die ich zuvor in meiner Datei gespeichert hatte, wiederverwenden und die Instanz einer Fallklasse wiederherstellen können (mit dem Standardwert für den neuen Parameter)
Aber wenn ich den folgenden Code verwenden
import scala.pickling._
import binary._
val messageback=bytes.unpickle[MessageTest]
Ich habe folgende Fehlermeldung:
java.lang.ArrayIndexOutOfBoundsException: 26 bei scala.pickling.binary.BinaryPickleReader $$ anonfun $ 2.Apply (BinaryPickleFormat .scala: 446) bei scala.pickling.binary.BinaryPickleReader $$ anonfun $ 2.apply (BinaryPickleFormat.scala: 434) bei scala.pickling.PickleTools $ class.withHints (Tools.scala: 498) bei scala.pickling .binary.BinaryPickleReader.withHints (BinaryPickleFormat.scala: 425) um scala.pickling.binary.BinaryPickleReader.beginEntryNoTagDebug (BinaryPickleFormat.scala: 434) bei scala.pickling.binary.BinaryPickleReader.beginEntryNoTag (BinaryPickleFormat.scala: 431)
Habe ich etwas falsch gemacht?
Gibt es einen bestehenden Weg, um mein Szenario arbeiten zu lassen?
Grüße
Was für eine Stille ... Ich habe die gleiche Frage, @Fred hast du eine Lösung gefunden? – Emer
Wir erwägen, den Typ "Map" als Workaround zu verwenden. http://docs.scala-lang.org/overviews/collections/maps – Emer