Java tutorial
/* * 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 ########## */