我试图从文件中理解以下陈述:
如果对象的具体类未知,则该对象可能为空
:
kryo.writeClassAndObject文件(输出,对象);
如果具体的类不确切地知道怎么办。
我有以下代码:
case class RawData(modelName: String,
sourceType: String,
deNormalizedVal: String,
normalVal: Map[String, String])
object KryoSpike extends App {
val kryo = new Kryo()
kryo.setRegistrationRequired(false)
kryo.addDefaultSerializer(classOf[scala.collection.Map[_,_]], classOf[ScalaImmutableAbstractMapSerializer])
kryo.addDefaultSerializer(classOf[scala.collection.generic.MapFactory[scala.collection.Map]], classOf[ScalaImmutableAbstractMapSerializer])
kryo.addDefaultSerializer(classOf[RawData], classOf[ScalaProductSerializer])
//val testin = Map("id" -> "objID", "field1" -> "field1Value")
val testin = RawData("model1", "Json", "", Map("field1" -> "value1", "field2" -> "value2") )
val outStream = new ByteArrayOutputStream()
val output = new Output(outStream, 20480)
kryo.writeClassAndObject(output, testin)
output.close()
val input = new Input(new ByteArrayInputStream(outStream.toByteArray), 4096)
val testout = kryo.readClassAndObject(input)
input.close()
println(testout.toString)
}
线程“main”中出现异常com.esotericsoftware.kryo公司.kryo异常:
无法创建类(不缺少参数构造函数):
com.romix.scala公司.serialization.kryo.ScalaProductSerializer
以前使用相同的代码,而不是使用我的类RawData,我使用了一个Map,它在writeObject和ReadObject中工作得非常出色。所以我很困惑。
有人能帮忙理解吗?