Java转型

        在写矩阵简单运算类时遇到Java转型错误,当时思路大致如下: 

        定义了一个输出方法    public void printResult(E m1[][], E m2[][], E m3[][], char op), 其中E为受限通配泛型,定义为<E extends Number >,测试时类型为Integer。 在测试方法中调用输出方法测试printResult(m1, m2, gm.matrixAdd(m1, m2), '+'),m1,m2类型为Integer[][], gm.matrixAdd(m1, m2) 返回值类型为Number[][]。

        测试结果报错:java.lang.ClassCastException: [[Ljava.lang.Number; cannot be cast to [[Ljava.lang.Integer;

        百度之后,知道原因。

        原来Java中转型分向上转型(如String-->Object)和向下转型了(如Object-->String)两种。数组向上转型时不会产生类型转换异常,因为String数组中每一个元素(String)都是Object,而向下转型时会产生类型转换异常,因为Object数组中每个元素(Object)不一定都是String。



你可能感兴趣的:(Java转型)