有如下一个方法:
/**
* 根据单个Key获取list结果
*return myCacheManager.getListData(fullName,
* () -> listAllBrands(fullName),122, UserInfo.class);
* @param key
* @param supplier
* @param cacheTime
* @param <V>
* @return
*/
public <V> List<V> getListData(String key, Supplier<List<V>> supplier, int cacheTime, Class<V> clazz) {
List<V> result = (List<V>) redisCache.get(key, clazz);
if (CollectionUtils.isEmpty(result)) {
result = supplier.get();
if (result != null && result.size() > 0) {
redisCache.set(key, result, cacheTime);
}
}
return result;
}
最后一个入参为Class,这个方法的本意是根据key查出一个List,我是这样调用这个方法的
redisCacheService.getListData(String.format( RedisEnums.ADVER_POSITION.getKey(), positionCode),
() -> this.getAdverListByPositionDb(positionCode, size), RedisEnums.ADVER_POSITION.getCacheTime(), UserInfo.class);
但是在运行时报了如下错误:
java.lang.ClassCastException: Cannot cast java.util.ArrayList to com.diyan.yihuijia.entity.outin.out.AdverInfoOut
我理解的意思是,我不应该传入UserInfo.class,但是我试着传入List.class也不可以,请问各位朋友,这个参数应该如何传值?