为什么这段代码不会抛出classcastexception?

时间:2015-03-20 13:43:03

标签: java

Object o=new int[]{1,2,3}; 
int[] array=(int[]) o; 
for(int a:array){
  //print the values
}

- 为什么我在迭代数组的过程中得到一个classcast异常,因为该数组扩展了Object类?

3 个答案:

答案 0 :(得分:1)

因为在java 中,偶数数组 Objects 。 。如果您打印array instanceof Object,则返回true。

接下来,您将创建一个数组并使用 Objects 引用。由于最终实例是数组,因此不会出现任何异常。

答案 1 :(得分:0)

Object是Java中所有类的超类。每个类都肆无忌惮地扩展对象。因此,任何类的实例都可以转换为Object类型。

答案 2 :(得分:0)

因为o本身 int[]数组 - 数组类型。例如,如果它是o = new long[] {...} - 在这种情况下,是的,它将抛出异常。