//package com.witframework.util;
import java.lang.reflect.Array;
public final class ArrayExpander {
public static Object merge(Object array1,Object array2){
if (array1 == null) {
return null;
}
if (array2 == null) {
return array1;
}
Class c = array1.getClass();
if(c.isArray()&&array2.getClass().isArray()){
Class cc = c.getComponentType();
Object newArray = Array.newInstance(cc, Array.getLength(array1)+Array.getLength(array2));
System.arraycopy(array1, 0, newArray, 0, Array.getLength(array1));
System.arraycopy(array2, 0, newArray, Array.getLength(array1), Array.getLength(array2));
return newArray;
}else {
throw new ClassCastException("need array");
}
}
public static Object expand(Object array, int newSize) {
if (array == null) {
return null;
}
Class c = array.getClass();
if (c.isArray()) {
int len = Array.getLength(array);
if (len >= newSize) {
return array;
} else {
Class cc = c.getComponentType();
Object newArray = Array.newInstance(cc, newSize);
System.arraycopy(array, 0, newArray, 0, len);
return newArray;
}
} else {
throw new ClassCastException("need array");
}
}
public static Object expandAtHead(Object array, int newSize) {
if (array == null) {
return null;
}
Class c = array.getClass();
if (c.isArray()) {
int len = Array.getLength(array);
if (len >= newSize) {
return array;
} else {
Class cc = c.getComponentType();
Object newArray = Array.newInstance(cc, newSize);
System.arraycopy(array,0, newArray, newSize-len, len);
return newArray;
}
} else {
throw new ClassCastException("need array");
}
}
}