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

网友投稿 268 2022-12-04


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

1. 背景

从JDK1.5开始,java支持个数可变的形参,类似:

public class ParamDemo {

nFqCEqvsja 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. 优点

其实个数可变形参的本质就是一位数组,但是如果上面http://的例子采用一位数组的话,写起来要更加麻烦点。

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

}

/**

* 使用个数可变形参的方法

*/

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

示例

/**

* 可变个数形参的方法:

* javaSE 5.0 中提供了 Varargs(variable number of arguments)机制,

* 允许直接定义能和多个实参相匹配的形参,从而,可以用一种更简单的方式,

* 来传递个数可变的形参.

*

* 2.具体使用:

* 2.1 可变个数形参的格式: 数据类型...变量名

* 2.2 当调用可变个数形参的方法时,传入的参数个数可以是0个,1个,2个,。。。

* 2.3 可变个数形参的方法与本类中,形参不同的方法之间构成重载

* 2.4 可变个数形参的方法与本类中的方法名相同,形参类型也相同的数组之间不过程重载。换句话说,二者不能共存。

* 2.5 可变方法个数形参在方法的形参中,必须声明在末尾。

* 2.6 可变个数形参在方法的形参中,最多只能声明一个可变形参。

*/

//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

System.out.println(strs[i]);

}

}

// public void show(String[] strs){

// }

//2.5

public void show(int i,String...strs){

}

}

System.out.println(strs[i]);

}

}

// public void show(String[] strs){

// }

//2.5

public void show(int i,String...strs){

}

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Mybatis Generator逆向工程的使用详细教程
下一篇:详解JAVA 线程
相关文章

 发表评论

暂时没有评论,来抢沙发吧~