import java.lang.reflect.Array; 
 
public class Main { 
  public static Object copyArray(final Object input) { 
    final Class type = input.getClass(); 
    if (!type.isArray()) { 
      throw new IllegalArgumentException(); 
    } 
    final int length = Array.getLength(input); 
    final Class componentType = type.getComponentType(); 
 
    final Object result = Array.newInstance(componentType, length); 
    for (int idx = 0; idx < length; idx++) { 
      Array.set(result, idx, Array.get(input, idx)); 
    } 
    return result; 
  } 
 
  public static void main(final String[] args) { 
    try { 
      int[] x = new int[] { 2, 3, 8, 7, 5 }; 
      char[] y = new char[] { 'a', 'z', 'e' }; 
      String[] z = new String[] { "Jim", "John", "Joe" }; 
      System.out.println(" -- z and copy of z --"); 
      outputArrays(z, copyArray(z)); 
    } catch (final Exception ex) { 
      ex.printStackTrace(); 
    } 
  } 
 
 
  public static void outputArrays(final Object first, final Object second) { 
    if (!first.getClass().isArray()) { 
      throw new IllegalArgumentException("first is not an array."); 
    } 
    if (!second.getClass().isArray()) { 
      throw new IllegalArgumentException("second is not an array."); 
    } 
 
    final int lengthFirst = Array.getLength(first); 
    final int lengthSecond = Array.getLength(second); 
    final int length = Math.max(lengthFirst, lengthSecond); 
 
    for (int idx = 0; idx < length; idx++) { 
      System.out.print("[" + idx + "]\t"); 
      if (idx < lengthFirst) { 
        System.out.print(Array.get(first, idx) + "\t\t"); 
      } else { 
        System.out.print("\t\t"); 
      } 
      if (idx < lengthSecond) { 
        System.out.print(Array.get(second, idx) + "\t"); 
      } 
      System.out.println(); 
    } 
  } 
} 
 
    
     
  
  |