在Java中将List [Object []>转换为Object [] []

Mar*_*mro 3 java arrays casting list classcastexception

如何在Java中将数组列表转换为二维数组?

//Prepare the list
List<Object[]> conf = new LinkedList<Object[]>();
conf.add(new Object[]{ "FOO", "BAR"});
conf.add(new Object[]{ "FOO", "BAR"});
Run Code Online (Sandbox Code Playgroud)

我试过了:

Object[][] array = (Object[][]) conf.toArray(new Object[0]);
Run Code Online (Sandbox Code Playgroud)

但它失败了ClassCastException:

java.lang.RuntimeException: java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [[Ljava.lang.Object;
Run Code Online (Sandbox Code Playgroud)

NPE*_*NPE 9

你缺少一对方括号:

    Object[][] array = conf.toArray(new Object[0][]);
                                                 ^^
Run Code Online (Sandbox Code Playgroud)

或者,如果您希望节省一个不必要的内存分配:

    Object[][] array = conf.toArray(new Object[conf.size()][]);
Run Code Online (Sandbox Code Playgroud)

Object[][]一旦参数toArray()具有正确的类型,则转换为to 是不必要的.