Как преобразовать строку в лямбда-выражение?
Я немного подумал и придумал интересную проблему, предположим, у нас есть файл конфигурации (входной) с:
x -> x + 1
x -> x * 2
x -> x * x
x -> -x
И кроме того, у нас есть списокInteger
s:
List<Integer> list = new ArrayList<>();
list.addAll(Arrays.toList(1, 2, 3, 4, 5));
Есть ли способ конвертироватьString
с (x -> x + 1
и т. д.)Object
s, которые представляют лямбда-выражение? Который затем может быть использован как:
Object lambda = getLambdaFromString("x -> x + 1");
if (lambda.getClass().equals(IntFunction.class) {
list.stream().forEach()
.mapToInt(x -> x)
.map(x -> ((IntFunction)lambda).applyAsInt(x))
.forEach(System.out::println);
}
Как бы я написал такой методgetLambdaFromString
?
Object lambda
что-то еще, что захватывает только лямбды?