代码之家  ›  专栏  ›  技术社区  ›  Troskyvs

JavaRay.NeWistPosits抛出CasasStExcExcor,为什么?

  •  0
  • Troskyvs  · 技术社区  · 7 年前

    非常简单的代码:

        int[] a = new int[]{4,1,2,3};
        Array a3 = (Array) Array.newInstance(a.getClass(), a.length);
    

    它在线程中抛出一个异常“主”“java. Lang.CassCasExExtExc:”[我不能被强制转换为java.

    哪里出了问题,怎么解决?

    1 回复  |  直到 7 年前
        1
  •  5
  •   Eran    7 年前

    Array.newInstance(a.getClass(), a.length) 创建二维int数组(当创建元素类型为 int[] ,所以应该是:

    int[][] a3 = (int[][]) Array.newInstance(a.getClass(), a.length);
    

    Array 是用于创建具有反射的数组实例的类,但数组实例不是该类的实例。

    顺便说一句,如果你想创建一个一维的 int 数组(即 INT[] )你应该写:

    int[] a3 = (int[]) Array.newInstance(int.class, a.length);