java中参数为泛型的方法,如何返回List?

有如下一个方法:

/**
     * 根据单个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也不可以,请问各位朋友,这个参数应该如何传值?

你可以试试传入Collection

看错误,是集合不能转换成实体类,类型转换错误,跟你调用方法没关系
是这个com.diyan.yihuijia.entity.outin.out.AdverInfoOut实体类

应该是你用完方法获取集合之后的下一步出错了

报错是集合不能转换成实体类,和你说的这些没有关系,报错是在那一行?看一下那一行的代码,哪行代码应该是返回的是个list但是你用com.diyan.yihuijia.entity.outin.out.AdverInfoOut这个类接收了