黑马程序员技术交流社区
标题:
关于泛型的疑问
[打印本页]
作者:
TK13761
时间:
2013-3-22 21:05
标题:
关于泛型的疑问
本帖最后由 谭仁龙 于 2013-3-23 09:43 编辑
public static void printCollection(Collection<Object> cols) {
for(Object obj:cols) {
System.out.println(obj);
}
/* cols.add("string");//没错
cols = new HashSet<Date>();//会报告错误! --------------->这里为什么会报告错误? 今天复习泛型的时候遇到的疑问 希望大 能详细解释下 谢谢*/
}
复制代码
作者:
刘凯
时间:
2013-3-22 21:12
这个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:21
楼主,你好
泛型是为了检查编译时装入的数据的正确性。
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类型的数据,重复定义了,所以报错!
}
作者:
TK13761
时间:
2013-3-23 09:35
王_强 发表于 2013-3-23 09:21
楼主,你好
泛型是为了检查编译时装入的数据的正确性。
public static void printCollection(Collecti ...
谢谢~~~~~~~
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2