Array Reflection: create instance
/* From http://java.sun.com/docs/books/tutorial/index.html */ /* * Copyright (c) 1995-1998 Sun Microsystems, Inc. All Rights Reserved. * * Permission to use, copy, modify, and distribute this software and its * documentation for NON-COMMERCIAL purposes and without fee is hereby granted * provided that this copyright notice appears in all copies. Please refer to * the file "copyright.html" for further important copyright and licensing * information. * * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE * SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR * NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY * LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS * DERIVATIVES. */ import java.lang.reflect.Array; public class SampleCreateArrayReflection { public static void main(String[] args) { int[] originalArray = { 55, 66 }; int[] biggerArray = (int[]) doubleArray(originalArray); System.out.println("originalArray:"); for (int k = 0; k < Array.getLength(originalArray); k++) System.out.println(originalArray[k]); System.out.println("biggerArray:"); for (int k = 0; k < Array.getLength(biggerArray); k++) System.out.println(biggerArray[k]); } static Object doubleArray(Object source) { int sourceLength = Array.getLength(source); Class arrayClass = source.getClass(); Class componentClass = arrayClass.getComponentType(); Object result = Array.newInstance(componentClass, sourceLength * 2); System.arraycopy(source, 0, result, 0, sourceLength); return result; } }