栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java语法糖之个数可变的形参的实现

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java语法糖之个数可变的形参的实现

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);
 }
 }

 
 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);
 }
 }

 
 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 

示例


//JDK 5.0之前:采用数组形参来定义方法,传入多个同一类型变量
//public static void test(int a,String[] books);
//JDK 5.0:采用可变个数形参来定义方法,传入多个同一类型变量
//public static void test(int a,String...books);
public class MethodArgsTest {
public static void main(String[] args){
MethodArgsTest test = new MethodArgsTest();
test.show(12);
test.show("hello");
test.show("hello","world","AA","BB");
// test.show(String[]{"AA","BB","CC"})
}
public void show(int i){

}
public void show(String s){
System.out.println("show(String)");
}
public void show(String...strs){
System.out.println("show(String ... strs)");
for (int i=0; i

到此这篇关于Java语法糖之个数可变的形参的实现的文章就介绍到这了,更多相关Java 个数可变的形参内容请搜索考高分网以前的文章或继续浏览下面的相关文章希望大家以后多多支持考高分网!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/133645.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号