事件分派期间发生异常:JRE 1.4环境中的java.lang.ClassCastException

时间:2013-12-11 02:54:38

标签: java oracle event-handling classcastexception event-dispatching

我在代码中一直收到ClassCastException。目标最初是将Set转换为List,因为refreshDetailVOTable方法只会获得Set。问题可能在于将Set转换为List。 refreshDetailVOTable可能会使用错误的List,这就是我收到ClassCastException的原因。

经调查后发现:

我一直在使用所有原始类型。我应该使用泛型来代替。它们将帮助在编译时发现这种错误。

该方法正在接收一个参数List detailIRsToDelete,我从中获得了一个迭代器并迭代了这样的元素:

         for (Iterator iDetails = detailIRsToDelete.iterator(); iDetails.hasNext();) {
             IdentifiableReference detailIR = (IdentifiableReference) iDetails.next();

我可能不小心将一些不同于IdentifiableReference的东西放入detailIRsToDelete中,从而在循环中的赋值语句中获得ClassCastException。

然后应将list参数声明为:

List <IdentifiableReference> detailIRsToDelete

编译器将检查将事物置于此列表中的行为,并且错误将在编译时添加错误对象的位置发生,而不是在运行时以后发生。

问题:这应解决Class Cast Exception,但是,这不能应用于当前的JRE,即1.4

除了升级之外,我们是否有针对JRE 1.4的任何解决方法?

1 个答案:

答案 0 :(得分:-1)

您可以在尝试投射

之前使用instanceof
Object o = iDetails.next();
if(o instanceof IdentifiableReference)
  IdentifiableReference detailIR = (IdentifiableReference)o;