* For example it can be called like this:
*
* String[] arr = (String[])ArrayHelper.cat(new String[]{"one","two"}, new String[]{"three","four"}); ** * @param arr1 first array * @param arr2 second array * @return an array whose length is the sum of the given array's lengths and contains all the elements in the given arrays. * @since ostermillerutils 1.06.00 */ public static Object[] cat(Object[] arr1, Object[] arr2){ // Use reflection to find the super class of both arrays Class> commonSuperClass = Object.class; boolean foundcommonSuperClass=false; for (Class> c1 = arr1.getClass().getComponentType(); !foundcommonSuperClass && !c1.equals(Object.class); c1 = c1.getSuperclass()){ for (Class> c2 = arr2.getClass().getComponentType(); !foundcommonSuperClass && !c2.equals(Object.class); c2 = c2.getSuperclass()){ if (c2.equals(c1)){ foundcommonSuperClass = true; commonSuperClass = c1; } } } // Create a new array of the correct type Object[] result = (Object[])Array.newInstance(commonSuperClass, arr1.length + arr2.length); // Copy the two arrays into the large array System.arraycopy(arr1, 0, result, 0, arr1.length); System.arraycopy(arr2, 0, result, arr1.length, arr2.length); return result; } /** * Tests two arrays to see if the arrays are equal. * Two arrays will be equal only if they are the same length * and contain objects that are equal in the same order. * * @param arr1 first array * @param arr2 second array * @return true iff two arguments are equal * @since ostermillerutils 1.06.00 */ public static boolean equal(Object[] arr1, Object[] arr2){ if (arr1 == null && arr2 == null) return true; if (arr1 == null || arr2 == null) return false; if (arr1.length != arr2.length) return false; for (int i=0; i