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 vonInteger
s:
List<Integer> list = new ArrayList<>();
list.addAll(Arrays.toList(1, 2, 3, 4, 5));
Gibt es eine Möglichkeit das umzuwandeln?String
s (x -> x + 1
usw.) anObject
s, 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
?
Object lambda
zu etwas anderem, das nur Lambdas erfasst?