0

使用JEXL,我正在尝试初始化数组,而不是向其中添加元素,但是下面的代码给了我“无法解决的属性 '0'错误。

var abc=[]; 
abc[0]=5;

1)如何初始化空数组并继续在其中添加值?

2)我可以像List一样使用它,我不需要在初始化时指定大小吗?

4

2 回答 2

0

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);
于 2018-04-26T05:10:54.810 回答
0

在 JEXL 中,语法[]创建一个 Java 数组,而不是一个List. 作为一个数组,它有一个固定的大小,所以你不能给它添加值。但是,JEXL 3.2 具有用于创建 ArrayList 文字的新语法。基本上,您添加...为最终元素。

所以在 JEXL 3.2 中,你的例子可以写成:

var abc=[...]; 
abc.add(5);

有关更多信息,请参阅JEXL 文字语法参考

于 2021-06-08T15:20:50.560 回答