我该如何解释这个错误?所需类型:供应商<R, Provided: Collector<Object, capture of ?, java.util.List<java.lang.Object>>

问题描述 投票:0回答:1

几周前我开始使用 Java 的流。我运行下面的代码并遇到错误消息。

  1. 我该如何解释这个错误? (更具体地说,消息中的“供应商”和“捕获”是什么?)。
  2. 修复此错误的最佳方法是什么?

源代码

import java.lang.*;
import java.util.*;
import java.util.stream.*;

public class Test {
    public static void main(String[] args) {
        List<Integer> list = IntStream.range(0, 10).collect(Collectors.toList());
        System.out.println(list);
    }
}

错误信息

必填类型:供应商 提供:收藏家>
原因:不存在类型变量 A、T 的实例,因此 Collector 符合Supplier

java list generics java-stream
1个回答
0
投票

Collectors.toList()
Collector
。但是,您所调用的
collect()
IntStream
方法需要 3 个参数 - 一个
Supplier<R>
、一个
ObjIntConsumer<R>
和一个
BiConsumer<R, R>

如果您想将

Collectors.toList()
传递给
collect()
,您应该首先将
IntStream
转换为
Stream<Integer>
,因为
Stream
有一个接受
collect()
Collector
方法。

List<Integer> list = IntStream.range(0, 10).boxed().collect(Collectors.toList());
© www.soinside.com 2019 - 2024. All rights reserved.