如何将字符串转换为lambda表达式?
- 论坛
- 如何将字符串转换为lambda表达式?
16 浏览
如何将字符串转换为lambda表达式?
我思考了一下,想到了一个有趣的问题。假设我们有一个配置(输入)文件,其中包含以下内容:
x -> x + 1
x -> x * 2
x -> x * x
x -> -x
此外,我们还有一个整数列表:
Listlist = new ArrayList<>(); list.addAll(Arrays.toList(1, 2, 3, 4, 5));
有没有办法将字符串(例如"x -> x + 1")转换为表示lambda表达式的对象?然后可以使用该对象进行如下操作:
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
?
- 我可以从JDK/JRE中重用一些内容吗?
- 我需要自己编写所有代码吗?
- 是否有可能将
Object lambda
缩小为只捕获lambda的其他类型?