それぞれが範囲 [1..99) からの int パラメータを持ち、1 つのメソッドを実行する Callable のリストを作成する必要があります。私の最初のアイデアは次のとおりです。
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 関数では内部ラムダが 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());
戻り値の型をラムダ式に渡す方法はありますか?