Arrays Groovy数组。[[]、[]].toArray()和[[]、[]]*.toArray()之间的区别是什么

Arrays Groovy数组。[[]、[]].toArray()和[[]、[]]*.toArray()之间的区别是什么,arrays,groovy,Arrays,Groovy,我已经在groovy中为参数化单元测试准备了数据: @Parameterized.Parameters static List data() { [ ['20101113', 'DATE', '20101114', 'DATE', 'some statement', '20101101T000000/20110101T000000', null,

我已经在
groovy
中为参数化单元测试准备了数据:

@Parameterized.Parameters
static List data() {
    [
            ['20101113', 'DATE',
             '20101114', 'DATE',
             'some statement',
             '20101101T000000/20110101T000000',
             null,
             ['some', 'expected', 'data', 'results']]
    // ...and other 
    ]*.toArray()
}
它工作正常。我检查了这段代码,并尝试将
]*.toArray()
替换为
].toArray()

我将更改恢复到原来的状态,但无法理解指令
]的原因。toArray()
出乎意料?
].toArray()
是如何工作的,以及
].toArray()
]*.toArray()
之间的区别是什么?

从中,
*。
称为扩展运算符并返回列表

扩展运算符(
*。
)用于对聚合对象的所有项调用操作。这相当于对每个项目调用操作并将结果收集到列表中:

如果没有
*
toArray
只返回一个对象数组,当然不能在运行时将数组强制转换为列表


使用
*
您当前的代码可以执行以下操作:

  static List data() {
        def result = []
        List input = [
                ['20101113', 'DATE',
                 '20101114', 'DATE',
                 'some statement',
                 '20101101T000000/20110101T000000',
                 null,
                 ['some', 'expected', 'data', 'results']]
                // ...and other
        ]

        for (def item : input) {
            result.add(item != null ? ((List) item).toArray() : null)
        }

        result
    }

*。
是一个扩展点运算符。希望这个例子能有所帮助-
  static List data() {
        def result = []
        List input = [
                ['20101113', 'DATE',
                 '20101114', 'DATE',
                 'some statement',
                 '20101101T000000/20110101T000000',
                 null,
                 ['some', 'expected', 'data', 'results']]
                // ...and other
        ]

        for (def item : input) {
            result.add(item != null ? ((List) item).toArray() : null)
        }

        result
    }