Java的数组长度一旦建立是不能更改的,只能新建一个同类型的大数组,然后将数据拷贝过去
/**
* 扩展一个任意类型数组的长度
* @param obj1 原数组
* @param newLength新数组的长度
* @return
*/
public static Object getNewArray(Object obj1,int newLength) {
Class c=obj1.getClass();//数组类型
Class componentType=c.getComponentType();//数组中单个数据类型
int oldlenth=Array.getLength(obj1);//原数组的长度
Object newArray=Array.newInstance(componentType, newLength);//生成一个新的数组
System.arraycopy(obj1,0,newArray, 0, oldlenth);//将原来数组中的数据拷贝到新数组中去
return newArray;
}
其中关于 System.arraycopy四个参数的解释
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
代码解释:
Object src : 原数组
int srcPos : 从元数据的起始位置开始
Object dest : 目标数组
int destPos : 目标数组的开始起始位置
int length : 要copy的数组的长度