* 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