美文网首页
Java不定长参数使用的一个坑

Java不定长参数使用的一个坑

作者: 明丶夷 | 来源:发表于2018-10-17 14:23 被阅读0次

    平常很少用到不定长参数,这次接触这个东西也是因为在数组转换列表时遇到的一个坑。

    废话不多说,直接上代码:

        public static void main(String[] arg0) {
            /**
             * 基本数据类型数组
             */
            int[] intNum = {1,2,3,4};
            /**
             * 包装类类型数组
             */
            Integer[] integerNum= new Integer[]{1, 2, 3, 4};
    
            System.out.println("基本数据类型数组");
            setArray(intNum);
            System.out.println("包装类数据类型");
            setArray(integerNum);
        }
    
        public static <T> void setArray(T... number) {
            System.out.println("number长度"+number.length);
            for(Object asd : number ){
                System.out.println(asd);
            }
        }
    

    输出结果:

    6STT4D0N~8UZGEVII%%PXW4.png
    不定长参数的本质是数组实现的,可以直接去传数组。上面的代码中就是直接传递的数组,结果的区别很明显。在传递基本数据类型数组时,整个数组直接被当作了一个整体,输出的也是数组的地址,参数number的长度为1,但是当参数是包装类类型数组时,就能正确的输出内容,并且参数number的长度也为4。为了比较,也用了其他的基本类型和对象类型的数据进行测试,结果无一不和上面的结果一致。
    综上所述,可以很肯定的说:

    不定长参数在使用数组传参时,一定要注意不能是基本类型数据的数组,只能是对象类型数据的数组,比如基本数据类型的包装类。

    原因不知道,记录在此,权当提醒

    相关文章

      网友评论

          本文标题:Java不定长参数使用的一个坑

          本文链接:https://www.haomeiwen.com/subject/biilzftx.html