Java可变长参数方法调用问题

原文链接: http://www.cnblogs.com/GoQC/p/5750300.html

不说废话,直接上代码:

 1 package mytest;
 2 
 3 import java.util.List;
 4 
 5 public class TestClass {
 6 
 7     public void method(List list){
 8         System.out.println("method with param List invoked!");
 9     }
10     
11     public void method(Object... objects){
12         System.out.println("method with param Object... invoked!");
13     }
14 } 
    
   
 1 package mytest;
 2 
 3 import java.util.ArrayList;
 4 import java.util.List;
 5 
 6 public class Main {
 7 
 8     public static void main(String[] args) {
 9         List list = new ArrayList();
10         list.add("aa");
11         list.add("bb");
12         list.add("cc");
13         
14         TestClass t = new TestClass();
15         
16         t.method(list);
17     }
18 
19 }

main方法执行结果为:

method with param Object... invoked!

为什么重载方法一个参数为List,一个参数为Object...,调用方法传参类型为List,实际执行的是参数为Object...方法?

泛型问题,如果注释掉Object...方法,则编译报错,不能将List转换为List

转载于:https://www.cnblogs.com/GoQC/p/5750300.html

你可能感兴趣的:(Java可变长参数方法调用问题)