我有一个函数,作为参数获取无限数量的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.
为什么?
实际上该方法toArray()返回一个Object[]
您必须使用重载方法 toArray(T[])
你应该使用:
addButtons(ibs.toArray(new ImageButton[ibs.size()]));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
54 次 |
| 最近记录: |