使用JEXL,我正在尝试初始化数组,而不是向其中添加元素,但是下面的代码给了我“无法解决的属性 '0'错误。
var abc=[];
abc[0]=5;
1)如何初始化空数组并继续在其中添加值?
2)我可以像List一样使用它,我不需要在初始化时指定大小吗?
在JEXL 语法中,您可以使用函数初始化对象new
。
其他选项是添加到上下文数组列表:
这是一个使用 jexl2 的工作示例:
JexlEngine jexl = new JexlEngine();
String jexlExp = "var abc=new(\"java.util.ArrayList\", 1);abc[0]=5";
Expression e = jexl.createExpression( jexlExp );
List<Integer> abc = new ArrayList<>(1);
JexlContext jc = new MapContext();
//jc.set("abc", abc ); second option to add arraylist to context
Object o = e.evaluate(jc);
在 JEXL 中,语法[]
创建一个 Java 数组,而不是一个List
. 作为一个数组,它有一个固定的大小,所以你不能给它添加值。但是,JEXL 3.2 具有用于创建 ArrayList 文字的新语法。基本上,您添加...
为最终元素。
所以在 JEXL 3.2 中,你的例子可以写成:
var abc=[...];
abc.add(5);
有关更多信息,请参阅JEXL 文字语法参考。