我正在尝试将DefaultListModel内容复制到数组中。
以下行导致异常


testArray =(cGenIndicator [])indObjList.toArray();


void testCasting() {
    DefaultListModel<cGenIndicator> indObjList;
    indObjList = new DefaultListModel<cGenIndicator>();
    indObjList.addElement(new cGenIndicator(null, null));

    cGenIndicator[] testArray;
    try {
        // This line causses exception saying
        // [Ljava.lang.Object; cannot be cast to [LIndicator.cGenIndicator;
        testArray = (cGenIndicator[]) indObjList.toArray();
    } catch(Exception e) {
        test++;
    }

    test++;
}

最佳答案

DefaultListModel.toArray返回Object[],并且Object[]不能直接转换为cGenIndicator[]

您可以通过以下方式实现:

Object[] objectArray = defaultListModel.toArray();
int length = objectArray.length;

cGenIndicator[] testArray = new cGenIndicator[length];
System.arraycopy(objects, 0, testArray, 0, length);

10-04 17:39