A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 散人online 中级黑马   /  2013-1-21 22:29  /  1390 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

    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){}
为什么第一个编译不过,第二个却可以?求详细解释...

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

2 个回复

倒序浏览
第一个不过,是给的参数不匹配此方法。这是匹配的方法:               
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]);
        
        这就不会再报错了

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
    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>();


这样就不报错了

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马