8
Làm thế nào để bạn deserialize bộ sưu tập bất biến bằng cách sử dụng Kryo? Tôi có cần phải đăng ký một cái gì đó ngoài những gì tôi đã làm không?Làm thế nào để bạn deserialize bộ sưu tập bất biến bằng cách sử dụng Kryo?
Đây là mẫu của tôi đang
import com.esotericsoftware.kryo.Kryo
import com.esotericsoftware.kryo.io.Input
import com.esotericsoftware.kryo.io.Output
import com.romix.scala.serialization.kryo._
val kryo = new Kryo
// Serialization of Scala maps like Trees, etc
kryo.addDefaultSerializer(classOf[scala.collection.Map[_,_]], classOf[ScalaMapSerializer])
kryo.addDefaultSerializer(classOf[scala.collection.generic.MapFactory[scala.collection.Map]], classOf[ScalaMapSerializer])
// Serialization of Scala sets
kryo.addDefaultSerializer(classOf[scala.collection.Set[_]], classOf[ScalaSetSerializer])
kryo.addDefaultSerializer(classOf[scala.collection.generic.SetFactory[scala.collection.Set]], classOf[ScalaSetSerializer])
// Serialization of all Traversable Scala collections like Lists, Vectors, etc
kryo.addDefaultSerializer(classOf[scala.collection.Traversable[_]], classOf[ScalaCollectionSerializer])
val filename = "c:\\aaa.bin"
val ofile = new FileOutputStream(filename)
val output2 = new BufferedOutputStream(ofile)
val output = new Output(output2)
kryo.writeClassAndObject(output, List("Test1", "Test2"))
output.close()
val ifile = new FileInputStream(filename)
val input = new Input(new BufferedInputStream(ifile))
val deserialized = kryo.readClassAndObject(input)
input.close()
Nó ném ngoại lệ
Exception in thread "main" com.esotericsoftware.kryo.KryoException: Class cannot be created (missing no-arg constructor): scala.collection.immutable.$colon$colon
Có vẻ như 'StdInstantiatorStrategy' là chìa khóa. Tôi đã gỡ bỏ phần còn lại và nó cũng hoạt động. Cảm ơn! – expert
ví dụ của bạn không biên dịch cho tôi: (Các vấn đề trên các dòng này: kryo.setInstantiatorStrategy (..) và kryo.addDefaultSerializer (..) – Adrian