Mega Code Archive

 
Categories / Java Tutorial / Reflection
 

Demonstrates the use of the Array class

/*  *     file: ArrayDemo.java  *  package: oreilly.hcj.reflection  *  * This software is granted under the terms of the Common Public License,  * CPL, which may be found at the following URL:  * http://www-124.ibm.com/developerworks/oss/CPLv1.0.htm  *  * Copyright(c) 2003-2005 by the authors indicated in the @author tags.  * All Rights are Reserved by the various authors.  * ########## DO NOT EDIT ABOVE THIS LINE ########## */ import java.lang.reflect.Array; /**    * Demonstrates the use of the Array class.  *  * @author <a href=mailto:kraythe@arcor.de>Robert Simmons jr. (kraythe)</a>  * @version $Revision$  */ public class ArrayDemo {   /**     * Copy an array and return the copy.    *    * @param input The array to copy.    *    * @return The coppied array.    *    * @throws IllegalArgumentException If input is not an array.    */   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;   }   /**     * Run the demo.    *    * @param args Command line arguments (ignored).    */   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(" -- x and y --");       outputArrays(x, y);       System.out.println(" -- x and copy of x --");       outputArrays(x, copyArray(x));       System.out.println(" -- y and copy of y --");       outputArrays(y, copyArray(y));       System.out.println(" -- z and copy of z --");       outputArrays(z, copyArray(z));     } catch (final Exception ex) {       ex.printStackTrace();     }   }   /**     * Print out 2 arrays in columnar format.    *    * @param first The array for the first column.    * @param second The array for the second column.    *    * @throws IllegalArgumentException __UNDOCUMENTED__    */   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();     }   } } /* ########## End of File ########## */