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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© TK13761 中级黑马   /  2013-3-22 21:05  /  2042 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 谭仁龙 于 2013-3-23 09:43 编辑
  1. public static void printCollection(Collection<Object> cols) {
  2.                 for(Object obj:cols) {
  3.                         System.out.println(obj);
  4.                 }
  5.                 /* cols.add("string");//没错
  6.                  cols = new HashSet<Date>();//会报告错误! --------------->这里为什么会报告错误? 今天复习泛型的时候遇到的疑问 希望大 能详细解释下 谢谢*/
  7. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1 赞一个!

查看全部评分

3 个回复

倒序浏览
这个cols.add("string");这一句 是因为"string"是一个字符串类型,字符串类型是Object的子类  因为用了多态  所以没有问题

而这句cols = new HashSet<Date>();  
相当于Collection<Object> cols = new HashSet<Date>();    这个据要用到了泛型的知识点 这个后边的基础加强会有讲
Collection<Object> cols = new HashSet<Date>();    这样的定义是不行的  同样Collection<Date> cols = new HashSet<Object>();  也不能通过
但是Collection<Object> cols = new HashSet();这样可以通过

点评

谢谢~  发表于 2013-3-23 09:35

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
楼主,你好
  泛型是为了检查编译时装入的数据的正确性。
   public static void printCollection(Collection<Object> cols) {    //这里你定义了集合cols中装入的是Object类型的数据
                for(Object obj:cols) {
                        System.out.println(obj);
                }
                /* cols.add("string");//     所以,这里根据多态,是正确的
                 cols = new HashSet<Date>();//但是,这里,你又把cols定义为装入Data类型的数据,重复定义了,所以报错!
}
回复 使用道具 举报
王_强 发表于 2013-3-23 09:21
楼主,你好
  泛型是为了检查编译时装入的数据的正确性。
   public static void printCollection(Collecti ...

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