Java设置为对象[][]

Java设置为对象[][],java,lambda,testng,testng-dataprovider,Java,Lambda,Testng,Testng Dataprovider,我有一个集合要用于TestNG参数化测试 我想从{a},{b},{c}开始 我试过: Set<String> elements = Stream.of("a", "b", "c").collect(Collectors.toSet()); Object[][] elementsArray = (Object[][]) elements.stream() .map(t -> new Object[] {t}) .t

我有一个集合要用于TestNG参数化测试

我想从{a},{b},{c}开始

我试过:

Set<String> elements = Stream.of("a", "b", "c").collect(Collectors.toSet());

Object[][] elementsArray = (Object[][]) elements.stream()
                .map(t -> new Object[] {t})
                .toArray(Object[]::new);

但它不起作用。有没有关于如何实现这一点的建议?非lambda解决方案也受欢迎。

除了创建对象[]的方法引用之外,您做的一切都是正确的。您正在构建一个2D数组,其中1D数组元素包含字符串

改变

Object[]::new


完成后,就不需要对对象[]进行强制转换;也删除它。

除了创建对象[]的方法引用之外,您做的一切都是正确的。您正在构建一个2D数组,其中1D数组元素包含字符串

改变

Object[]::new

完成后,就不需要对对象[]进行强制转换;也要删除它。

您所需要的只是对象[]:[]::新的:

使用Object[]::new您正在创建一个Object[],然后将其强制转换为一个将失败的Object[]。

您只需要Object[]::new:

使用对象[]:新建您正在创建一个对象[],然后将其强制转换为一个将失败的对象[]

Set<String> elements = Stream.of("a", "b", "c").collect(Collectors.toSet());

Object[][] elementsArray = elements.stream()
                .map(t -> new Object[] {t})
                .toArray(Object[][]::new);