转换队列<;德克<;字符串>&燃气轮机;在Java中转换为对象[]

转换队列<;德克<;字符串>&燃气轮机;在Java中转换为对象[],java,casting,queue,testng,Java,Casting,Queue,Testng,我正在用构建一个动态测试。在Java中,如何转换定义为Queue queueofreques=ArrayDeque()的数据结构到对象[]【】【】?基于此,我尝试了以下方法: @DataProvider( name = "providedQueue" ) public static Object[][] dataForTest(){ return new Object[][]{{SomeClass.GetQueueOfDeques}}; } 其中,方法GetQueueO

我正在用构建一个动态测试。在Java中,如何转换定义为
Queue queueofreques=ArrayDeque()的数据结构
对象[]【】【】
?基于此,我尝试了以下方法:

@DataProvider( name = "providedQueue" )
public static Object[][] dataForTest(){
        return new Object[][]{{SomeClass.GetQueueOfDeques}};
    }
其中,方法
GetQueueOfDeques
返回上面定义的
queueOfDeques
数据结构。我不知道我做错了什么,但它并没有像应该的那样转换变量,推导出TestNG忽略了参数化测试

java.lang.ClassCastException:com.company.product.migrationtester.ArrayDeque不能强制转换为java.lang.String


只需通过迭代即可:

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;
}
静态对象[][]转换(集合>抄送){
Object[][]res=新对象[cc.size();
int i=0;
用于(收集c:cc)
res[i++]=c.toArray();
返回res;
}

这样,您就可以获得将任何类型(如
所指)的任何集合集合(它们可能是
队列
Deque
列表
和许多其他集合)转换为
对象[]
数组的通用方法。

我知道这不关我的事。。。但为什么要降级到对象[]集合?您仍然需要在以后重新转换其内容,以便能够访问元素方法:/@DiegoMartinoia这是返回类型,适用于
@DataProvider
。我更改了
res[I++]=c.toArray()
res[i++]=Object[]{c}
并且工作得很好。太多了@sasha salauyou