gpt4 book ai didi

java - 为什么使用 printf ("%s") 作为传递给泛型方法的参数?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:59:44 24 4
gpt4 key购买 nike

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 不是仅用于字符串吗?

最佳答案

问题是您不知道“元素”是什么类型。在您的示例中,它可以是 Integer、Double 或 Character。在这种情况下,您不能使用 %d 或 %lf,因为它们不适用于非 Integer(对于 %d)或 Double(对于 %lf)的类型。

%s 实际上对它们都有效,因为所有对象类型都有一个 .toString(),所以它们都可以转换为字符串以进行打印。

关于java - 为什么使用 printf ("%s") 作为传递给泛型方法的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15178542/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com