黑马程序员技术交流社区

标题: 泛型问题 [打印本页]

作者: 散人online    时间: 2013-1-21 22:29
标题: 泛型问题
    copy1(new Vector<Date>(),new String[10]);
    copy2(new Date[10],new String[10]);
public static <T> void copy1(Collection<T> dest,T[] src){}
public static <T> void copy2(T[] dest,T[] src){}
为什么第一个编译不过,第二个却可以?求详细解释...
作者: 李敬卫    时间: 2013-1-21 23:02
第一个不过,是给的参数不匹配此方法。这是匹配的方法:               
public static <T> void copy1(T dest,T[] strings){}
        
        public static <T> void copy2(T[] dest,T[] src){}
                  copy1(new Vector<Date>(),new String[10]);
                  
                     copy2(new Date[10],new String[10]);
        
        这就不会再报错了
作者: 黑马张旭    时间: 2013-1-22 14:02
    copy1(new Vector<Date>(),new String[10]);
    copy2(new Date[10],new String[10]);
public static <T> void copy1(Collection<T> dest,T[] src){}
public static <T> void copy2(T[] dest,T[] src){}
为什么第一个编译不过,第二个却可以?求详细解释...  

答案你可以这么分析   第一个方法 你调用的时候可以 等价于   
  Collection<T> dest  = new Vector<Date>() ;  左面明明是可以接受任意的类型   而右面只规定是 Data类型 这样当然不可以
就比如 左面是一个可以装动物的栅栏   你右面是个只装狗的栅栏  编译当然不能通过

你可以把  改成  new Vector<Object>();


这样就不报错了





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2