Java 在mvel表达式中创建一个数组,并检查数组中是否存在变量

Java 在mvel表达式中创建一个数组,并检查数组中是否存在变量,java,regex,expression,mvel,Java,Regex,Expression,Mvel,我有一个变量,它有一些数值x=5 我想更正一个表达式,如: 如果arr=[4,7,10]包含x在mvel中 有可能吗?如果有,怎么可能 到目前为止,我必须正确表达如下: x == 4 || x == 7 || x == 10 但是,既然我可能有一个大的清单,这可以做一些类似的事情吗 x in [4,7,10,...] 代码: for(Rule rule: ruleList) { String expresssion = rule.getConditionExpression();

我有一个变量,它有一些数值
x=5

我想更正一个表达式,如:

如果arr=[4,7,10]
包含
x
mvel

有可能吗?如果有,怎么可能

到目前为止,我必须正确表达如下:

x == 4 || x == 7 || x == 10
但是,既然我可能有一个大的清单,这可以做一些类似的事情吗

x in [4,7,10,...]
代码:

for(Rule rule: ruleList)
{
    String expresssion = rule.getConditionExpression();
    boolean result = (Boolean) expressionHandler.execute(expresssion,ruleEvalData);

}
这里的表达式如下所示:

表达式='x==4 | | x==7 | | x==10'

RuleValdata将包含x

我想知道


[4,7,10,…]中的表达式='x'可以在MVEL?

使用
java.util.stream.IntStream
类:

int[] array = {4, 7, 10};
boolean exist = IntStream.of(array).anyMatch(x -> x == 5);
如果(数组)
的流
的任何元素与提供的谓词匹配,则返回
true
,否则返回
false

另一个选项

Integer[] array = {4, 7, 10};
boolean exist = Arrays.asList(array).contains(5);

您要使用MVEL
contains
运算符。可以使用语法构造要测试的值列表


奇怪的是,我在MVEL的文档页面中找不到
contains
操作符的文档,但是它调用了标准方法。

嗨,我的主要问题是我能在MVEL表达式中定义这个int[]数组吗?另外,我不需要在这里传递x,因为它是java代码中的一个变量,将在运行时填充。是的,您可以使用任何值而不是literal
5
。但是您不能在表达式本身中声明int[]数组
[4,7,10] contains x