发布于2026-05-21 阅读(0)
扫一扫,手机访问
Ja va的变长参数(varargs)本质上就是数组,只是编译器在背后悄悄做了些“包装”工作。理解这套转换机制,是写出既灵活又安全的代码的关键。

当你写下 void method(String... args) 这样的声明时,Ja va编译器并不会把它当成什么特殊语法。在它眼里,这行代码等价于 void method(String[] args)。调用时,如果你传入多个离散参数,比如 method("a", "b", "c"),编译器会自动帮你生成一个 String[3] 数组。但如果你直接传入一个现成的数组,比如 method(arr),编译器则会“偷个懒”,直接复用这个数组,不会再创建新的。
这个底层逻辑带来了几个直接的推论:
调用变长参数方法时,实参有两种形式:一种是零个或多个具体值,另一种是直接传入一个数组。这两种写法在语义上略有不同,主要影响是否触发数组的自动创建。
变长参数的类型在声明时就已确定,它遵循Ja va的类型系统,不支持泛型擦除后的原始类型混用。举个例子:
当需要将一个 List
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8