传递一组对象而不是不确定数量的对象

Bep*_*i's 0 java android

我有一个函数,作为参数获取无限数量的ImageButtons.

private void addButtons(ImageButton... ib) {
// ...
}
Run Code Online (Sandbox Code Playgroud)

所以如果我想以这种方式调用它,这是完美的:

addButtons(button1, button2, button3);
Run Code Online (Sandbox Code Playgroud)

但现在我发现我必须使用未知数量的对象作为参数,例如数组.在addButtons里面,ImageButton参数被用作数组,所以我尝试了这个:

ArrayList<ImageButton> ibs = new ArrayList<ImageButton>();
// feed the ibs ArrayList
addButtons((ImageButton[])ibs.toArray());
Run Code Online (Sandbox Code Playgroud)

我得到了一个ClassCastException.

为什么?

Ale*_* C. 5

实际上该方法toArray()返回一个Object[]

您必须使用重载方法 toArray(T[])

你应该使用:

addButtons(ibs.toArray(new ImageButton[ibs.size()]));
Run Code Online (Sandbox Code Playgroud)