java_lang_ArrayStoreException

问题分析

这是数组存储异常,当试图将类型不兼容类型的对象存入一个Object[]数组时将引发异常。

解决方案

当试图将类型不兼容类型的对象存入一个Object[]数组时将引发异常,建议根据堆栈信息修改存储对象类型。

代码示例

class Father{}
class Son extends Father{}
... ...
public void handleArrayStoreException(){
      Father[] fathers=new Son[3];
      // 此处会抛异常
      try {
        // 无法存父类对象,只能存子类对象
      fathers[0]=new Father();
    } catch (ArrayStoreException e) {
      e.printStackTrace();
    }
      // 正确的代码
      Father father=new Father();
      Son son=new Son();
      if(son instanceof Son){
          // 可以存进数组
        fathers[1]=son;
      }
      if(father instanceof Son){
            // 无法存进数组
        fathers[2]=father;
      }
    }

参考文献