数组不能强制类型转换的情况

来源:互联网 发布:在线真心话大冒险软件 编辑:程序博客网 时间:2024/04/29 10:45

一个运行时类型为父类的数组,如果其存放的都是子类的元素,也不能够将其转换为子类的数组。例如:

Object[] os = new Object[]{"hello","world"};

String[] ss =(String[])os;

其实这和普通的向下强转没什么不同,例如一个父类引用的运行时类型就是父类,当然不能向下强转为子类,之所以我们认为其能强转,是被数组中存放的元素的类型迷惑了,其实跟容器中的元素类型没关系。

所以当os的运行时类型如果就是String[]的时候,自然就能强转了。

      Object[] os = new String[]{"ss","ss"};

      String[] ss = (String[])os;

 

总结:数组的类型转换和其他类型没有什么不同,可以认为Object[] 是String[]的父类型,但是转换的关键是要看运行时类型,千万不要被数组中存放的元素给迷惑了,他们不起作用。

0 0
原创粉丝点击