转换队列<deque <string>&gt; Java中的Object [] []

时间:2016-02-08 15:18:28

标签: java casting queue testng

我正在使用@DataProvider annotation for TestNG构建动态测试。在Java中,如何将定义为Queue<Deque<String>> queueOfDeques = ArrayDeque<Deque<String>>();的数据结构转换为Object[][]?基于this explanation,我尝试了这个:

@DataProvider( name = "providedQueue" )
public static Object[][] dataForTest(){
        return new Object[][]{{SomeClass.GetQueueOfDeques}};
    }

方法GetQueueOfDeques返回上面定义的queueOfDeques数据结构。我不知道我做错了什么,但它没有按原样转换变量,导致TestNG忽略参数化测试。

  

java.lang.ClassCastException:net.easysol.detectid.migrationtester.ArrayDeque无法强制转换为java.lang.String

1 个答案:

答案 0 :(得分:2)

只需通过迭代来完成:

static Object[][] convert(Collection<? extends Collection<?>> cc) {
    Object[][] res = new Object[cc.size()][]; 
    int i = 0;
    for (Collection<?> c : cc)
        res[i++] = c.toArray();
    return res;
}

这样您就可以获得任何类型的任何集合集合(可能是QueueDequeList和许多其他集合)的一般方法(如<?>指的那样)到Object[][]数组。