Java tutorial
//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"); } } }