java可变参数列表的实现

 参数就是我们调用一个方法时需要传入得数据,在方法中可能需要参数协助处理数据或者对参数进行解析处理以达到我们希望得到的数据和结果。

 平常我们在写一个方法时,我们能确定需要传入什么样的参数以及参数的个数,这样我们在实现这个方法的时候在确定参数的时候都会有明确的目标。但是有时候会有这种特殊情况,我们并不知道我们将要传入几个参数,或者说我们并不确定外部会传入多少参数。在这种情况下,我们就要用到可变参数列表。下面是可变参数方法的实现方法。

1、传入数组对象或者集合,这里只对传入数组对象进行简单说明,集合的实现也是一样。其实很简单,我们只要把需要传入的参数放到一个数组里面或者集合里面,再把数组或者集合当做参数传入即可。

 1 package demoArgs;
 2 /**
 3  * 测试数组对象当做参数
 4  * @author dyf
 5  *
 6  */
 7 public class TestArgs {
 8     //传一个对象数据当做参数
 9     static void printArray(Object[] args){
10         for (Object object : args) {
11             System.out.println(object);
12         }
13     }
14     
15     public static void main(String[] args) {
16         printArray(new Object[]{
17                 new Integer(123),new Float(3.14),new Double(123.123)
18         });
19         
20         printArray(new Object[]{"one","two","three"});
21         
22         printArray(new Object[]{new A(),new A(),new A()});
23     }
24     
25 }
26 
27 class A{}

打印结果:

123
3.14
123.123
one
two
three
demoArgs.A@4471dfd7
demoArgs.A@101ebf5c
demoArgs.A@52a53948

------------------------------------------------------------------------------------------------------------------------------

2、这种方法原理也是同上面一种相识,只不过是参数格式不同,格式是在参数类型后面跟三个点(...)然后在写上参数名。具体看代码。

 1 package demoArgs;
 2 /**
 3  * 测试可变参数列表
 4  * @author dyf
 5  *
 6  */
 7 public class TestArgs2 {
 8     //
 9     static void printArray(Object... args){
10         for (Object obj : args) {
11             System.out.println(obj);
12             
13         }
14     }
15     
16     public static void main(String[] args) {
17         printArray(new Object[]{
18                 new Integer(123),new Float(3.14),new Double(123.123)
19         });
20         
21         printArray(new Object[]{"one","two","three"});
22         
23         printArray(new Object[]{new B(),new B(),new B()});
24         
25         printArray((Object[])new Integer[]{1,2,3,4,5,});
26         
27         //这种形式不传参数也可以,有时这种用法会很有用
28         printArray();
29         
30         printArray(new Integer(111),new String("测试可变参数列表"));
31     }
32     
33 }
34 class B {}

打印结果:

123
3.14
123.123
one
two
three
demoArgs.B@52a53948
demoArgs.B@5d53d05b
demoArgs.B@2994363b
1
2
3
4
5
111
测试可变参数列表

-----------------------------------------------------------------------------------------------

3、上面说的传入参数的参数类型是一致的,其实当传入的参数类型不一致的时候也可以实现传入可变参数列表。可变参数也可以不传。

 1 package demoArgs;
 2 /**
 3  * 测试多种类型的可变参数
 4  * @author dyf
 5  *
 6  */
 7 public class TestArray3 {
 8     static void printArray(int i,String... s){
 9         for (String str : s) {
10             System.out.println(i + "---" + str);
11             i++;
12         }
13         
14         System.out.println(i);
15     }
16     
17     public static void main(String[] args) {
18         printArray(1, "11","22","33");
19         
20         printArray(1);
21     }
22 }

打印结果:

1---11
2---22
3---33
4
1

原文地址:https://www.cnblogs.com/dyfbk/p/6906283.html