guopengfeiheze 2021-10-27 09:28 采纳率: 42.9%
浏览 31

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

  • 写回答

3条回答 默认 最新

  • 普通网友 2021-10-27 09:31
    关注

    你可以试试传入Collection

    评论

报告相同问题?

问题事件

  • 修改了问题 10月27日
  • 创建了问题 10月27日

悬赏问题

  • ¥170 如图所示配置eNSP
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥15 键盘指令混乱情况下的启动盘系统重装