当我使用 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 逐个字段进行初始化。
我究竟做错了什么?