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
然后调用toolRedis.set("longKey", list , 60L);
就会出现上述报错
看到这个错误首先第一想法想到没有继承Serializable,经查已经继承。
仔细查看报错日志,看到[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的。
截取换成stream()的skip
dataList = dataList.stream() .skip(0) // 偏移量 .limit(5) // 截取量,页大小 .collect(Collectors.toList());
OK~ 问题解决
文文的博客:博学躬行。欢迎指正~


![but received an object of type [java.util.ArrayList$SubList] but received an object of type [java.util.ArrayList$SubList]](http://www.mshxw.com/aiimages/31/713084.png)
