Como converter uma string em uma expressão lambda?
Eu estava pensando um pouco e me deparei com um problema interessante, suponha que tenhamos um arquivo de configuração (entrada) com:
x -> x + 1
x -> x * 2
x -> x * x
x -> -x
Além disso, temos uma lista deInteger
s:
List<Integer> list = new ArrayList<>();
list.addAll(Arrays.toList(1, 2, 3, 4, 5));
Existe uma maneira de converter oString
s (x -> x + 1
etc.) paraObject
s que representam uma expressão lambda? Que poderia então ser usado como:
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);
}
Como eu escreveria esse métodogetLambdaFromString
?
Object lambda
para outra coisa que só captura lambdas?