栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

but received an object of type [java.util.ArrayList$SubList]

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

but received an object of type [java.util.ArrayList$SubList]

目录

1.问题描述

1.1 报错日志1.2 使用场景 2.问题原因3.问题解决

1.问题描述 1.1 报错日志

今天在使用Redis插入值时遇到报错

Cannot serialize; nested exception is org.springframework.core.serializer.support.SerializationFailedException: Failed to serialize object using DefaultSerializer;
 nested exception is java.lang.IllegalArgumentException: DefaultSerializer requires a Serializable payload but received an object of type [java.util.ArrayList$SubList]
org.springframework.data.redis.serializer.SerializationException: Cannot serialize; nested exception is org.springframework.core.serializer.support.SerializationFailedException: 
Failed to serialize object using DefaultSerializer; nested exception is java.lang.IllegalArgumentException: DefaultSerializer requires a Serializable payload but received an object of type
 [java.util.ArrayList$SubList]
1.2 使用场景

先用List list = getStudentList();
然后调用toolRedis.set("longKey", list , 60L);
就会出现上述报错
看到这个错误首先第一想法想到没有继承Serializable,经查已经继承。

2.问题原因

仔细查看报错日志,看到[java.util.ArrayList$SubList] ,意识到我在getStudentList()时使用了list = list.subList(0,5); 。
调试到subList方法,看见了没!!!

他new SubList(this, 0, fromIndex, toIndex); 这里是new了一个SubList,而SubList是ArrayList的内部类,这个内部类并没有实现Serializable

在看ArrayList是实现了java.io.Serializable的。

3.问题解决

截取换成stream()的skip

dataList = dataList.stream()
   .skip(0)		//  偏移量
   .limit(5)    // 截取量,页大小
   .collect(Collectors.toList());

OK~ 问题解决

文文的博客:博学躬行。欢迎指正~

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/713084.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号