错误:
:1
:2
:3
Exception in thread "main" java.lang.NullPointerException
at cn.itcast.day1.ReflectDemo.getDimensionsOfArray(ReflectDemo.java:92)
at cn.itcast.day1.ReflectDemo.getDimensionsOfArray(ReflectDemo.java:98)
at cn.itcast.day1.ReflectDemo.getDimensionsOfArray(ReflectDemo.java:98)
at cn.itcast.day1.ReflectDemo.getDimensionsOfArray(ReflectDemo.java:98)
at cn.itcast.day1.ReflectDemo.main(ReflectDemo.java:79)
Object o = Array.newInstance(test.getClass(), 2,3); //我觉得楼主用的例子就是二维数组吧,这里定成2,3是不是更合适?但是我试了一下楼主的原句,也不会错误。
o = new int[][]{{4,5,6},{1,2,3}}; //加上这一句就正确了
getDimensionsOfArray(o);
}
代码如上:
楼主原来的代码中,先是初始化了数组test,然后利用test所属类的字节码重新newInstance生成一个新的实例对象。
然而这个实例对象是空数组,也就等价于:Object o = new int[2][3];
而这个新的实例对象是没有对元素初始化的,因此,当递归到最里层,因为没有初始化,元素为null
再判断if(o.getClass().isArray()) 的时候,就会使用一个空的指针,当最里层o为null,怎么可以调用getClass()呢,是吧?