gpt4 book ai didi

java - 为什么 DefaultListModel.toArray() 抛出 ClassCastException?

转载 作者:行者123 更新时间:2023-12-04 21:29:22 27 4
gpt4 key购买 nike

我正在尝试将 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++;
}

最佳答案

toArray,如果没有参数,将返回一个 Object[],它不能转换为 cGenIndicator[]。相反,您可以使用重载方法获取要填充的数组作为参数:

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

编辑:

DefaultListModel 没有这个重载方法,Mia Kulpa。将 Object[] 转换为 cGenIndicator 的一种方法是使用流:

testArray = Arrays.stream(indObjList.toArray())
.map(cGenIndicator.class::cast)
.toArray(cGenIndicator[]::new)

关于java - 为什么 DefaultListModel.toArray() 抛出 ClassCastException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52590356/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com