我一直在我的代码中收到 ClassCastException。最初的目标是将 Set 转换为 List,因为 refreshDetailVOTable 方法只会获取 Set。问题可能在于将 Set 转换为 List。refreshDetailVOTable 可能使用了错误的列表,这就是我收到 ClassCastException 的原因。
经过调查,发现:
我一直在使用所有原始类型。我应该改用泛型。他们将帮助在编译时发现这种错误。
该方法正在接收一个参数 List detailIRsToDelete,我从中获得了一个迭代器并像这样遍历元素:
for (Iterator iDetails = detailIRsToDelete.iterator(); iDetails.hasNext();) {
IdentifiableReference detailIR = (IdentifiableReference) iDetails.next();
我可能不小心将 IdentifiableReference 以外的其他内容放入 detailIRsToDelete,从而在循环内的赋值语句中获得 ClassCastException。
然后应将列表参数声明为:
List <IdentifiableReference> detailIRsToDelete
将事物放入此列表的行为将由编译器检查,并且错误将在编译时添加错误对象的位置发生,而不是像经验那样在运行时稍后发生。
问题:这应该解决 Class Cast Exception,但是,这不能应用于当前 JRE 1.4
除了升级之外,我们还有针对 JRE 1.4 的解决方法吗?