如何在JDK8中动态编译/加载lambda表达式?

And*_*i N 4 java lambda java-8

我想获得功能接口的实例,例如来自String的Predicate.例如,用户在UI的文本字段中键入lambda表达式,用于过滤一些数字列表list.stream().filter("lambda here")

Gar*_*vis 5

没有直接的方法来做到这一点.我害怕Java还没有转向一些动态语言.

您可以使用自JDK6以来存在的Java编译器API,将代码片段编译成实现Predicate并动态加载它的类,但它不会很漂亮.