我想知道是否有一种方法可以将SuperType
数组转换为和SubType
数组。像这样:
SubType[] subArray = (SubType[])someSuperTypeArray;
我知道在运行时会抛出
ClassCastException
。转换数组的一种方法是将其复制到另一个数组中。就我而言,不能复制它。我可以欺骗JVM使其认为类型转换有效,并绕过类类型检查吗?创建对
SuperType
数组的引用,通过它可以将其视为某些SubType
数组。 (可能面临无法解释的错误的危险) 最佳答案
如果您定义数组像
SuperType[] array = {element1, element2};
SubType[] array2 = (SubType[]) array;
它不起作用,但是您可以这样做:
SuperType[] array = new SubType[]{element1, element2};
SubType[] array2 = (SubType[]) array;
您只需要确保在投射时,字段
array
始终必须是您的SubType的数组。