Tro*_*yvs 0 java arrays generics instance new-operator
非常简单的代码:
int[] a = new int[]{4,1,2,3};
Array a3 = (Array) Array.newInstance(a.getClass(), a.length);
Run Code Online (Sandbox Code Playgroud)
它抛出一个异常'在线程中的异常"main"java.lang.ClassCastException:[[我不能强制转换为java.lang.reflect.Array"
我哪里出错了,怎么解决?
Array.newInstance(a.getClass(), a.length)创建一个二维int数组(当你创建一个元素类型为a的数组时会发生这种情况int[]),所以它应该是:
int[][] a3 = (int[][]) Array.newInstance(a.getClass(), a.length);
Run Code Online (Sandbox Code Playgroud)
Array 是用于使用反射创建数组实例的类,但数组实例不是该类的实例.
顺便说一句,如果你打算创建一维int数组(即int[]),你应该写:
int[] a3 = (int[]) Array.newInstance(int.class, a.length);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
69 次 |
| 最近记录: |