Wie konvertiere ich einen String in einen Lambda-Ausdruck?

Ich habe ein bisschen nachgedacht und mir ein interessantes Problem ausgedacht. Nehmen wir an, wir haben eine Konfigurationsdatei (Eingabe) mit:

x -> x + 1
x -> x * 2
x -> x * x
x -> -x

Und außerdem haben wir eine Liste vonIntegers:

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

Gibt es eine Möglichkeit das umzuwandeln?Strings (x -> x + 1usw.) anObjects, die einen Lambda-Ausdruck darstellen? Welches könnte dann verwendet werden als:

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);
}

Wie würde ich eine solche Methode schreibengetLambdaFromString?

Gibt es etwas, das ich vom JDK / JRE wiederverwenden könnte?Würde ich alles alleine schreiben müssen?Ist es möglich das einzugrenzen?Object lambda zu etwas anderem, das nur Lambdas erfasst?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage