为什么会出现 Java 泛型编译错误?

时间:2021-05-06 01:31:19

标签: java generics lambda wildcard

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);***

code with compile error

这是方法定义:

 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;
    }

为什么会出现编译错误?

0 个答案:

没有答案