Подтвердить что ты не робот

Общий метод для печати всех элементов в массиве

Я хочу метод, который бы зацикливал массив любого типа и печатал их, я написал следующее:

public static <T> void printArray(T[] arr){
    for(T t: arr){
       System.out.print(t+" ");
    }
    System.out.println("");
}

но этот работает только для массивов классов, что, если у меня есть char[] вместо Character[] или int[] вместо Integer[], или есть способ бросить их перед рукой? Благодаря

4b9b3361

Ответ 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()