Я хотел бы использовать трассировку scala для хранения двоичного представления класса case.
Я хотел бы знать, есть ли способ управлять версией класса case (способ, которым позволяет буфер протокола)
Вот мой пример
Я делаю программу в определенную дату со следующим классом case
case class MessageTest(a:String,b:String)
Затем я сериализую экземпляр этого класса
import scala.pickling._
import binary._
val bytes=MessageTest("1","2").pickle
И затем я сохраняю результат в файл
Впоследствии я мог бы теперь сделать эволюцию на моем классе case, чтобы добавить новое необязательное поле
case class MessageTest (a:String,b:String,c:Option[String]=None)
Я хотел бы иметь возможность повторно использовать данные, которые я ранее сохранил в своем файле, десериализовать его и восстановить экземпляр класса case (со значением по умолчанию для нового параметра)
Но когда я использую следующий код
import scala.pickling._
import binary._
val messageback=bytes.unpickle[MessageTest]
Я получил следующую ошибку:
java.lang.ArrayIndexOutOfBoundsException: 26 at scala.pickling.binary.BinaryPickleReader $$ anonfun $2.apply(BinaryPickleFormat.scala: 446) at scala.pickling.binary.BinaryPickleReader $$ anonfun $2.apply(BinaryPickleFormat.scala: 434) at scala.pickling.PickleTools $class.withHints(Tools.scala: 498) в scala.pickling.binary.BinaryPickleReader.withHints(BinaryPickleFormat.scala: 425) at scala.pickling.binary.BinaryPickleReader.beginEntryNoTagDebug(BinaryPickleFormat.scala: 434) в scala.pickling.binary.BinaryPickleReader.beginEntryNoTag(BinaryPickleFormat.scala: 431)
Я сделал что-то не так?
Существует ли способ, с помощью которого работает мой сценарий?
Привет