我需要用一個方法執行一個方法來創建一個Callable列表,每個列表都有一個範圍爲[1..99]的int參數。我最初的想法是:Return Callable <Double> intStream對象中的mapToObj函數列表
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作爲可贖回<雙>。 如果我使用典型的內部類這樣它的工作原理:
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表達式?
「calculateResult」的簽名究竟是什麼? – skiwi