当存在一个默认值是不可变的 List 字段时存在问题(使用场景:dubbo 响应了一个 mybatis plus分页结果的Page对象)
public class Page<T> implements IPage<T> {
/**
* 查询数据列表
*/
protected List<T> records = Collections.emptyList();
}
java.lang.UnsupportedOperationException
at java.util.AbstractList.add(AbstractList.java:148)
at java.util.AbstractList.add(AbstractList.java:108)
at com.alibaba.fastjson2.reader.ORG_1_1_UnmodifiableList.readJSONBObject(Unknown Source)
at com.alibaba.fastjson2.JSONB.parseObject(JSONB.java:799)
at com.alibaba.fastjson2.issues_2600.MybatisPlusPageTest.writeReade(MybatisPlusPageTest.java:70)
at com.alibaba.fastjson2.issues_2600.MybatisPlusPageTest.testUnmodifiableList(MybatisPlusPageTest.java:46)
at java.lang.reflect.Method.invoke(Method.java:498)
at java.util.ArrayList.forEach(ArrayList.java:1259)
at java.util.ArrayList.forEach(ArrayList.java:1259)
当存在一个默认值是不可变的 List 字段时存在问题(使用场景:dubbo 响应了一个 mybatis plus分页结果的Page对象)
经检查是这段代码取了默认值,后面调用了它的 add 方法
com.alibaba.fastjson2.reader.ObjectReaderCreatorASM:3737
复现代码