package genericMethods;
public class OverloadedMethods {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Integer[] integerArray = {1, 2, 3, 4, 5};
Double[] doubleArray = {1.0, 2.0, 3.0, 4.0, 5.0};
Character[] charArray = {'a', 'b', 'c', 'd'};
System.out.println("A has: ");
printArray(integerArray);
System.out.println("B has: ");
printArray(doubleArray);
System.out.println("C has: ");
printArray(charArray);
}
public static <T> void printArray(T[] array)
{
for(T element : array)
System.out.printf("%s ", element);//why use %s instead of others?
System.out.println();
}
}
我的问题是方法printArray()不知道要打印哪种类型的数据,并且似乎%d在运行时会发生错误-但是%s是否仅适用于String?
最佳答案
问题是您不知道“元素”的类型。在您的示例中,它可以是Integer,Double或Character。在这种情况下,您不能使用%d或%lf,因为它们不适用于非整数(%d)或Double(%lf)的类型。
%s实际上适用于所有对象,因为所有Object类型都有一个.toString(),因此可以将它们全部转换为String进行打印。