打印数组中所有元素的泛型方法

2022-09-03 00:48:00

我想要一个可以循环任何类型数组并打印它们的方法,我已经写了以下内容:

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

但是这个只适用于类数组,如果我有 a 而不是 a 或 a 而不是 a ,或者有没有办法在手之前转换它们呢?谢谢char[]Character[]int[]Integer[]


答案 1

java.util.Arrays.toString(array)应该做。

  • commons-lang也有这个 - (但更喜欢JDK的)ArrayUtils.toString(array)
  • commons-lang 允许自定义分隔符 -StringUtils.join(array, ',')
  • 番石榴还允许分隔符,并可以选择跳过空值:Joiner.on(',').skipNulls().join(array)

所有这些都返回一个 ,然后您可以或 。请注意,如果数组的元素以有意义的方式实现,这些将为您提供有意义的输入。StringSystem.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)