java可变参数列表的实现

Posted 街角小七

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
[email protected]
[email protected]
[email protected]

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

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
[email protected]
[email protected]
[email protected]
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

 




























以上是关于java可变参数列表的实现的主要内容,如果未能解决你的问题,请参考以下文章

java 可变长度参数

java——慎用可变参数列表

Java 我在学反射的时候,遇到可变长度参数列表,具体的成员方法就是?

C语言中如何实现可变参函数

关于Java可变参数问题?

Visual Studio 自定义代码片段在方法定义的参数列表中不起作用