Обработване на класове казуси в twitter chill (Scala интерфейс към Kryo)?

Twitter-chill изглежда като добро решение на проблема как да се сериализира ефективно в Scala без излишни шаблони.

Въпреки това, не виждам никакви доказателства за това как те обработват класове случаи. Това само автоматично ли работи или трябва да се направи нещо (напр. създаване на конструктор с нулев аргумент)?

Имам известен опит с механизма за сериализация WireFormat, вграден в Scoobi, който е обвивка на Scala Hadoop, подобна на Scalding. Те имат сериализатори за класове на казуси до 22 аргумента, които използват методите за прилагане и премахване на прилагането и правят съпоставяне на типове на аргументите към тези функции, за да извлекат типовете. (Това може да не е необходимо в Kryo/chill.)


person Urban Vagabond    schedule 31.12.2013    source източник


Отговори (1)


Те обикновено работят (стига членовете на компонентите също да могат да се сериализират от Kryo):

case class Foo(id: Int, name: String)

// setup
val instantiator = new ScalaKryoInstantiator
instantiator.setRegistrationRequired(false)
val kryo = instantiator.newKryo()

// write
val data = Foo(1,"bob")
val buffer = new Array[Byte](4096]
val output = new Output(buffer)
kryo.writeObject(output, data)

// read
val input = new Input(buffer)
val data2 = kryo.readObject(input,classOf[Foo]).asInstanceOf[Foo]
person Arne Claassen    schedule 17.04.2015