Общий метод для печати всех элементов в массиве
Я хочу метод, который бы зацикливал массив любого типа и печатал их, я написал следующее:
public static <T> void printArray(T[] arr){
for(T t: arr){
System.out.print(t+" ");
}
System.out.println("");
}
но этот работает только для массивов классов, что, если у меня есть char[]
вместо Character[]
или int[]
вместо Integer[]
, или есть способ бросить их перед рукой? Благодаря
Ответы
Ответ 1
java.util.Arrays.toString(array)
.
- commons-lang также имеют это -
ArrayUtils.toString(array)
(но предпочитают JDK)
- commons-lang позволяет настраивать разделитель -
StringUtils.join(array, ',')
- guava также позволяет разделитель и имеет возможность пропускать нулевые значения:
Joiner.on(',').skipNulls().join(array)
Все они возвращают a String
, которые вы можете затем System.out.println(..)
или logger.debug(..)
. Обратите внимание, что это даст вам значимый ввод, если элементы массива реализовали toString()
значимым образом.
Последние два варианта, увы, не поддерживают примитивные массивы, но являются хорошими вариантами, чтобы знать.
Ответ 2
Вы не можете написать общее определение для примитивных массивов. Вместо этого вы можете использовать перегрузку метода и написать метод для каждого типа примитивного массива, подобного этому,
public static void printArray(int[] arr)
public static void printArray(short[] arr)
public static void printArray(long[] arr)
public static void printArray(double[] arr)
public static void printArray(float[] arr)
public static void printArray(char[] arr)
public static void printArray(byte[] arr)
public static void printArray(boolean[] arr)
Ответ 3
Вы не можете передавать примитивные массивы методу printArray()