1. 背景
从JDK1.5开始,Java支持个数可变的形参,类似:
public class ParamDemo {
public static void main(String[] args) {
String basketball = "篮球";
String football = "足球";
showSports(basketball, football);
}
/**
* 使用个数可变形参的方法
*/
public static void showSports(String... sports) {
for (String sport : sports) {
System.out.println(sport);
}
}
}
2. 优点
其实个数可变形参的本质就是一位数组,但是如果上面的例子采用一位数组的话,写起来要更加麻烦点。
public class ParamDemo {
public static void main(String[] args) {
String basketball = "篮球";
String football = "足球";
showSports(basketball, football);
showSportsByArray(new String[] { basketball, football });
}
/**
* 使用个数可变形参的方法
*/
public static void showSports(String... sports) {
for (String sport : sports) {
System.out.println(sport);
}
}
/**
* 使用1维数组作为形参
*/
public static void showSportsByArray(String[] sports) {
for (String sport : sports) {
System.out.println(sport);
}
}
}
3. 注意事项
3.1 位置只能在方法的最后
由于个数可变的形参数量不确定,所以只能放到形参列表的最后。而数组形式的参数是可以放到形参列表任意位置的。
3.2 个数可变形参本质是数组,所以不能算重载
看下面的例子:
public class ParamDemo {
public static void main(String[] args) {
String basketball = "篮球";
String football = "足球";
showSports(basketball, football);
showSportsByArray(new String[] { basketball, football });
}
/**
* 使用个数可变形参的方法
*/
public static void showSports(String... sports) {
for (String sport : sports) {
System.out.println(sport);
}
}
/**
* 使用1维数组作为形参
*/
public static void showSports(String[] sports) {
for (String sport : sports) {
System.out.println(sport);
}
}
}
编译就报错了,如下,说明啥?String...
这样的形参其实还是编译为String[]
运作的,所以不算重载。
Duplicate method showSports(String[]) in type ParamDemo ParamDemo.java
点击查看更多内容
1人点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦