我需要使用执行一种方法创建 Callable 列表,其中每个都具有范围 [1..99) 中的 int 参数。我最初的想法是:
List<Callable<Double>> list = new ArrayList<>(100);
IntStream.range(1, 99).forEach(i -> list.add(() -> calculateResult(i)));
下一个想法是收集要列出的项目:
List<Callable<Double>> list = IntStream.range(1, 99).mapToObj(value -> (() -> calculateResult(value))).collect(Collectors.toList());
看起来不错,但在 mapToObj 函数中,内部 lambda 无法识别为 Callable<Double>。如果我使用这样的典型内部类,它可以工作:
List<Callable<Double>> list = IntStream.range(1, 99).mapToObj(new IntFunction<Callable<Double>>() {
@Override
public Callable<Double> apply(int value) {
return () -> calculateResult(value);
}
}).collect(Collectors.toList());
有没有办法将返回类型传递给 lambda 表达式?