From 83ee77f5af2f29304b7f2963106be101752d3d3a Mon Sep 17 00:00:00 2001 From: Fabian Becker Date: Sun, 2 Nov 2014 15:33:56 +0100 Subject: [PATCH] Simplify appendArrays method to use generic type. --- src/eva2/tools/ToolBox.java | 47 +++++++++++-------------------------- 1 file changed, 14 insertions(+), 33 deletions(-) diff --git a/src/eva2/tools/ToolBox.java b/src/eva2/tools/ToolBox.java index 89bad3af..697ee4a9 100644 --- a/src/eva2/tools/ToolBox.java +++ b/src/eva2/tools/ToolBox.java @@ -3,6 +3,7 @@ package eva2.tools; import eva2.gui.BeanInspector; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; /** @@ -36,44 +37,24 @@ public final class ToolBox { } /** - * Append two String arrays. If both are null, null is returned. + * Appends two typed arrays. * - * @param strArr1 First array - * @param strArr2 Second array + * @param first First array + * @param rest Arbitrary number of remaining arrays * @return A single array containing the merged set of values */ - public static String[] appendArrays(String[] strArr1, String[] strArr2) { - if (strArr1 == null) { - return strArr2; + public static T[] appendArrays(T[] first, T[]... rest) { + int totalLength = first.length; + for (T[] array : rest) { + totalLength += array.length; } - if (strArr2 == null) { - return strArr1; + T[] result = Arrays.copyOf(first, totalLength); + int offset = first.length; + for (T[] array : rest) { + System.arraycopy(array, 0, result, offset, array.length); + offset += array.length; } - String[] ret = new String[strArr1.length + strArr2.length]; - System.arraycopy(strArr1, 0, ret, 0, strArr1.length); - System.arraycopy(strArr2, 0, ret, strArr1.length, strArr2.length); - return ret; - } - - public static String[] appendArrays(String[] strArr1, String str) { - String[] ret = new String[strArr1.length + 1]; - System.arraycopy(strArr1, 0, ret, 0, strArr1.length); - ret[ret.length - 1] = str; - return ret; - } - - public static Object[] appendArrays(Object[] objArr1, Object o) { - Object[] ret = new Object[objArr1.length + 1]; - System.arraycopy(objArr1, 0, ret, 0, objArr1.length); - ret[ret.length - 1] = o; - return ret; - } - - public static Object[] appendArrays(Object[] objArr1, Object[] objArr2) { - Object[] ret = new Object[objArr1.length + objArr2.length]; - System.arraycopy(objArr1, 0, ret, 0, objArr1.length); - System.arraycopy(objArr2, 0, ret, objArr1.length, objArr2.length); - return ret; + return result; } /**