加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 为什么使用printf(“%s”)传递给泛型方法的参数?

发布时间:2020-12-14 23:45:04 所属栏目:Java 来源:网络整理
导读: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}; Ch
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将在运行时发生错误 – 但不仅仅是String的%s?

解决方法

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

%s实际上适用于所有这些,因为所有Object类型都有.toString(),因此它们都可以转换为字符串进行打印.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读