【发布时间】:2014-05-30 20:20:08
【问题描述】:
当我使用 kryo 反序列化 ArrayList 对象时,我得到了 NullPointerException。
Caused by: java.lang.NullPointerException
at java.util.ArrayList.ensureExplicitCapacity(ArrayList.java:215)
at java.util.ArrayList.ensureCapacity(ArrayList.java:199)
at com.esotericsoftware.kryo.serializers.CollectionSerializer.read(CollectionSerializer.java:96)
at com.esotericsoftware.kryo.serializers.CollectionSerializer.read(CollectionSerializer.java:22) at com.esotericsoftware.kryo.Kryo.readObject(Kryo.java:679)
at com.esotericsoftware.kryo.serializers.ObjectField.read(ObjectField.java:106)
我可以看到 StdInstantiatorStrategy 创建了一个 ArrayList 而没有调用它的构造函数,留下一个未初始化的字段导致异常。
文档说应该首先调用无参数构造函数,如果没有可用的,则应该使用 StdInstantiatorStrategy 逐个字段进行初始化。
我做错了什么?
【问题讨论】: