用于打印数组中所有元素的通用方法

use*_*275 16 java arrays generics methods

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

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

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

Boz*_*zho 26

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()以有意义的方式实现,这些将为您提供有意义的输入.

最后两个选项,唉,不支持原始数组,但是很好的选择要知道.