Collections Data Structure Java

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