1 **
2 * Created by Lenovo on 2017/12/10.
3 * java中可变长参数
4 */
5 public class reflect04 {
6
7 //m1有一个int类型的可比变长参数
8 //m1在调用的时候实参可以是0-N个
9 public static void m1(int... a){
10 System.out.println("int型可变长参数执行...."+a);
11 }
12
13 //如果有可以精确匹配的方法则调用该方法,不会再执行可变长参数的那个方法
14 public static void m1(int a){
15 System.out.println("精确匹配执行....."+a);
16 }
17
18 //可变长参数可以等同看做一个数组
19 public static void m2(String... args){
20 for(int i=0;i<args.length;i++){
21 System.out.println("m2都喜欢的运动如下:"+args[i]);
22 }
23 }
24
25 public static void m3(Class... args) throws Exception{
26
27 for(int i=0;i<args.length;i++){
28 Class arg = args[i];
29 System.out.println(arg.newInstance());
30 }
31 }
32
33 //可变长参数只能出现一次,并且只能出现在所有参数的最后一位
34 //错误实例:
35 //public static void m4(String... args,int i){}
36 public static void main(String[] args) throws Exception {
37
38 //执行m1
39 m1(1); //调用精确匹配的m1方法
40 m1(1,2);
41 m1(1,2,3);
42 m1(1,2,3,4);
43
44 //执行m2
45 m2("旅游","看电影","游泳","打球");
46
47 //执行m3
48 m3(Date.class,Employlee.class);
49
50 //m1输出
51 //m1精确输出:精确匹配执行.....1
52 //int型可变长参数执行....[I@330bedb4
53 //int型可变长参数执行....[I@2503dbd3
54 //int型可变长参数执行....[I@4b67cf4d
55
56 //m2输出
57 //m2都喜欢的运动如下:旅游
58 //m2都喜欢的运动如下:看电影
59 //m2都喜欢的运动如下:游泳
60 //m2都喜欢的运动如下:打球
61
62 //m3输出
63 //Sun Dec 10 21:59:58 CST 2017
64 //空参构造方法执行.....
65 //Employlee{name='null'}
66 }
67 }