我想要一个循环任何类型数组并打印它们的方法,我写了以下内容:
public static <T> void printArray(T[] arr){
for(T t: arr){
System.out.print(t+" ");
}
System.out.println("");
}
但是这个只适用于类数组,如果我有char[]
而不是Character[]
,或int[]
而不是Integer[]
,或者是一种方法来预先施展他们?感谢
答案 0 :(得分:26)
java.util.Arrays.toString(array)
应该这样做。
ArrayUtils.toString(array)
(但更喜欢JDK)StringUtils.join(array, ',')
Joiner.on(',').skipNulls().join(array)
所有这些都会返回String
,然后您可以System.out.println(..)
或logger.debug(..)
。请注意,如果数组元素以有意义的方式实现toString()
,这些将为您提供有意义的输入。
最后两个选项,唉,不支持原始数组,但是很好的选择要知道。
答案 1 :(得分: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)
答案 2 :(得分:1)
private static void printArray(Object arr) {
// TODO Auto-generated method stub
String arrayClassName=arr.getClass().getSimpleName();
if (arrayClassName.equals("int[]"))
System.out.println(java.util.Arrays.toString((int[]) arr));
if (arrayClassName.equals("char[]"))
System.out.println(java.util.Arrays.toString((char[]) arr));
}
答案 3 :(得分:0)
您无法将原始数组传递给printArray()方法