黑马程序员技术交流社区
标题: 泛型 [打印本页]
作者: hmyuanqi 时间: 2014-8-18 14:53
标题: 泛型
ArrayList arr = new ArrayList<Integer>();
arr.add("asd");
为什么可以放S听类型的对象?他不是指向ArrayList<Integer>()?
这里对象加入泛型只能放Integer,但是运行时也没错误,代表String也放进去了。这跟没加泛型有什么区别|??
ArrayList<Integer> arr1 = new ArrayList();
arr1只能存放Integer及其子类对象,上面的代码和ArrayList<Integer> arr1 = new ArrayList<Integer>();有什么区别?
作者: 不想飞不到 时间: 2014-8-18 16:57
同求回复~
作者: 黑马-胡明 时间: 2014-8-18 18:26
ArrayList<Integer> arr=new ArrayList<Iterator>();
作者: 怀念黑海岸 时间: 2014-8-18 18:35
这样子说:ArrayList list =new ArrayList<Integer>();只是定义了一个ArrayList的集合,但是实际上你并未确定对这个list集合中究竟要存储什么类型的数据,你其实就只是单纯的申明了一个list。你当然可以往这个集合里面放String类型的数据了,而后面的那种ArrayList<Integer> list =new ArrayList();申明方式你就已经在定义的时候明确表示了这个集合中装的元素只能是Integer类型的,ArrayList list =new ArrayList();这句话左边是你的申明,右边才是你的申明指向的实体对象,你的实体对象是装Integer类型的ArrayList集合,但是你还是ArrayList吧,所以我左边的lsit引用就能使用你,通过你这个对象实体产生的数据我都能接受,但是左边你又没定义你的list中必须装Integer,那么我往里面装String也是可以的啊。
记好,一个集合中是能够存储各种数据类型的。我们之所以在申明这个集合时加上泛型,其中一个非常重要的目的就是为了避免在使用这个集合中的元素时进行强制转型的麻烦。
作者: hmyuanqi 时间: 2014-8-19 09:52
哦,谢谢
作者: hmyuanqi 时间: 2014-8-19 10:39
你好,请问你是报44期安卓的女生么
作者: 怀念黑海岸 时间: 2014-8-19 12:03
我不是北京班的,我在深圳,我46期的。
作者: 怀念黑海岸 时间: 2014-8-19 12:04
还有我是男的,不是女生。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |