构造数组
/**
* 数组生成
*/
@Test
public void test5(){
int[] numbers1 = (int[]) parser.parseExpression("new int[4]").getValue();
int[][] numbers2 = (int[][]) parser.parseExpression("new int[4][5]").getValue();
// 一维数组可以初始化
int[] numbers3 = (int[]) parser.parseExpression("new int[]{1,2,3}").getValue();
Assert.assertTrue(numbers3.length==3);
// 二维数组初始化失败
int[][] numbers4 = (int[][]) parser.parseExpression("new int[][]{
{1,2,3},{4,5,6}}").getValue();
}
如果需要构造一个空数组,则可以直接new一个空的数组,多维数组也是支持的,但是多维数组只支持一个空的数组,对于需要初始化指定数组元素的定时暂时在SPEL中是不支持的
构造List
在SPEL中可以使用{e1,e2,e3}的形式来构造一个List
@Test
public void test09() {
ExpressionParser parser = new SpelExpressionParser();
List<Integer> intList = (List<Integer>)parser.parseExpression("{1,2,3,4,5,6}").getValue();
int index = 0;
for (Integer i : intList) {
Assert.assertTrue(i == ++index);
}
}
如果希望构造的List的元素还是一个List,则可以将构造的List的元素定义为{e1,e2,e3}这样的形式,如:{ {1,2},{3,4,5},{6,7,8,9}}
@Test
public void test09_1() {
ExpressionParser parser = new SpelExpressionParser();
List<List<Integer>> list = (List<List<Integer>>)parser.parseExpression("{
{1,2},{3,4,5},{6,7,8,9}}").getValue();
int index = 0;
for (List<Integer> intList : list) {
for (Integer i : intList) {
Assert.assertTrue(i == ++index);
}
}
}
构造Map
在SPEL中如果需要构造一个Map则可以使用{key1:value1,key2:value2}的形式进行定义
@Test
public void test10() {
ExpressionParser parser = new SpelExpressionParser();
Map<String, Long> map = (Map<String, Long>)parser.parseExpression("{'ke