首页 > 解决方案 > 为什么它有一个 Java 泛型编译错误?

问题描述

strong 和强调行出现编译错误:原因:不存在类型变量 L 的实例,因此 Collection 符合 List

CollectionRela.init(MaterialAidUnitDto::getAidUnitId, MaterialAidUnitDto::getAidName, new Function<List<Long>, List<MaterialAidUnitDto>>() {
            @Override
            public List<MaterialAidUnitDto> apply(List<Long> longs) {
                return udcService.queryMaterialUnitByIds(longs);
            }
        });

        final Function<List<Long>, List<MaterialAidUnitDto>> queryMaterialUnitByIds = udcService::queryMaterialUnitByIds;

        CollectionRela.init(MaterialAidUnitDto::getAidUnitId, MaterialAidUnitDto::getAidName, queryMaterialUnitByIds);
        ***CollectionRela.init(MaterialAidUnitDto::getAidUnitId, MaterialAidUnitDto::getAidName, udcService::queryMaterialUnitByIds);***

有编译错误的代码

这是方法定义:

 public static <C extends Collection<T>, L, R, T> CollectionRela<C, L, R, T> init(Function<T, L> left, Function<T, R> right,
            Function<? Extends Collection<L>, C> supplier) {
        CollectionRela<C, L, R, T> collectionRela = new CollectionRela<C, L, R, T>(left, right, supplier);
        return collectionRela;
    }

为什么会出现编译错误?

标签: javagenericslambdawildcard

解决方案


推荐阅读