Object[] objects = new Type[0];
Type[] types = (Type[])objects;
Java数组其实是“伪多态”,虽然它有开头列出的继承体系,但它并不能依据多态原则在继承树上向下转型,即使符合条件也不行。 继承关系是这样的Object <--- Object[] <--- Type[] (Type是非Object类型),数组的多态仅仅对它自身负责,不对它所包含的元素负责。数组在继承树上的位置仅仅与数组对象自身有关,而和它所包含的元素无关。 问题就在于因为数组的强类型绑定,我们过多地把数组和它的元素联系在了一起。 |