《数据结构与算法》之泛型——数组类型的兼容性

如Employee和Student都继承自Person,考虑下面两条赋值语句:

Person arr=new Employee[5];  //Employee和Person是兼容的
arr[0]=new Student(……);      //Student和Person也是兼容的

两句都编译,而arr[0]实际上是引用一个Employee,可是Student和Employee是不兼容的,这样就产生了类型混乱。运行时系统不能抛出ClassCastException异常,因为不存在类型转换。

避免这种问题的最容易的方法就是指定这些数组不是类型兼容的。可是,在Java中数组是类型兼容的。这叫做协变数组类型。每个数组都明确了它所允许存储的对象的类型。如果将一个不兼容的类型插入到数组中,那么虚拟机就将抛出一个ArrayStoreException异常。

注: 本文基于《数据结构与算法(Java语言描述)》一书,仅作学习交流。

猜你喜欢

转载自blog.csdn.net/manbulaiyinhepan/article/details/83244019