java中list对象数组(如list<User>)存到redis中,取出来的时候报了异常java.util.ArrayList cannot be cast to
时间: 2024-02-13 20:05:14 浏览: 129
redis存储时list转JSON,JSON转List遇到的JSONException
和上一题类似,当你从Redis中取出list对象数组时,如果你使用的是Java的反序列化机制,那么它会尝试将Redis中存储的数据反序列化成一个ArrayList对象,而这个ArrayList对象无法强制转换为List<User>对象,因为它们实际上是不同的类。
为了解决这个问题,你可以在将数据存储到Redis中之前,将List<User>对象转换为一个数组,然后再存储这个数组。当你从Redis中取出数据时,你可以将这个数组转换为一个List<User>对象,这样就可以避免类型转换异常了。
示例代码:
```java
// 存储数据到Redis中
List<User> userList = new ArrayList<>();
// 将List<User>转换为User[]数组
User[] userArray = userList.toArray(new User[userList.size()]);
// 存储数组到Redis中
redisTemplate.opsForValue().set("userListKey", userArray);
// 从Redis中取出数据
// 取出数组
User[] userArray = (User[]) redisTemplate.opsForValue().get("userListKey");
// 将数组转换为List<User>对象
List<User> userList = Arrays.asList(userArray);
```
阅读全文