这是我自己的写的一段代码:public class ArrayReflect {
public static Object arrayAppend(Object obj){
Class c=obj.getClass();
if(!c.isArray())
return null;
Class component=c.getComponentType();
int length=Array.getLength(obj);
int newLength=length*11/10+10;
Object result=Array.newInstance(component, newLength);
System.arraycopy(obj, 0, result, 0, length);
return result;
}
public static void main(String[] s){
Test test=new Test("工资",2000.0);
Test t=new Test("学费",13800.0);
Test tests[]=new Test[2];
tests[0]=test;
tests[1]=t;
Object obj=arrayAppend(tests);
Test[] print=(Test[])obj;
System.out.println(print.length);
for(int i=0;i<print.length;i++){
System.out.println(tests[i].getTestName()+":"+tests[i].getTestValue());
}
}
}这里出了问题我在扩充了数组之后得到一个对象数组。打印他的长度为12.但是我在迭代的时候出现了越界的异常。
请大家帮忙解决下。小弟不才。刚开始深入学习COREJAVA。

解决方案 »

  1.   

    System.out.println(tests[i].getTestName()+":"+tests[i].getTestValue());
    改为System.out.println(print[i].getTestName()+":"+print[i].getTestValue());数组的长度虽然是12,但里面只放了两个对象。所以上面的代码改了之后会出现空指针异常。
      

  2.   

    数组的长度虽然是12,但里面就两个对象,遍历时会有 空指针异常所以遍历要改一下
           for(int i=0;i<print.length;i++){
             if(print[i]!=null) // 判断数组元素是否为空
                System.out.println(print[i].getName()+":"+print[i].getSalary());
            }这样估计可以避免那个异常