首页 > 解决方案 > Beanshell 是否支持 java 8 流?

问题描述

当尝试在迭代 Map<String,List> 值的代码段下执行时,它会在符号 > 处引发 beanshell 解析异常。我可以解决这个问题的任何解决方案吗?

map.entrySet().stream().forEach(map -> {
    if (map.getValue().stream().anyMatch(s -> groupDN.startsWith(s.toUpperCase()))) {
        return "DONE";
    }
    ;
});

异常运行规则:BeanShell 脚本错误:bsh.ParseException: Parse error at line 30, column 22. 遇到:> BSF info: Test_RO at line: 0 column: columnNo

标签: javastreambeanshellsailpoint

解决方案


Java 8+ Streams本身实际上“只是”一堆 Java 库类。

您在这里真正要问的是 BeanShell 是否支持编写使用 Streams 的惯用 Java 代码所需的以下 Java 语言功能:

  • Java 5 的泛型类型,
  • 来自 Java 8 的 lambdas 和类型推断。

据我所知,所有这些的答案都是“不”。BeanShell 3.0 的路线图上有泛型类型(请参阅https://github.com/beanshell/beanshell#development-road-map),但未提及 lambdas 和类型推断。


如果您想要一个支持所有 Java 语言的交互式 Java REPL,您可能会更好地查看“jshell”,它是从 Java 9 开始的标准 Java SE 的一部分。显然它可以嵌入...


推荐阅读