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 deIntegers:

List<Integer> list = new ArrayList<>();
list.addAll(Arrays.toList(1, 2, 3, 4, 5));

Existe uma maneira de converter oStrings (x -> x + 1etc.) paraObjects 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?

Existe algo que eu possa reutilizar no JDK / JRE?Eu precisaria escrever tudo sozinho?É possível afinar oObject lambda para outra coisa que só captura lambdas?

questionAnswers(2)

yourAnswerToTheQuestion