我觉得是这样的,集合是一个容器,这个容器不同于数组的就是这个容器只能装对象,但集合的“记性”不是太好,你将对象存进去后,集合瞬间就会“忘记”你存进来的到底是什么类型的,所以在取出来的时候都是Object(因为Object是所有类的父类),所以也是你在集合这经常会对取出来的元素(对象)进行向下转型,例如Person p = (Person)obj
当然,对你的问题延伸一下也可以理解这个问题,就是你之前在学习数组的时候会这样定义:int arr[] = new int[5],定义了一个数组容器,在定义的时候就声明了这个容器装的类型是int型。在学习集合的时候,你又会这样定义集合:List list = new ArrayList();定义了一个集合容器,但这个容器装什么类型的元素呢,你没定义啊,所以默认统统装Object类型的元素,所以不管你是装person对象还是装demo对象,都是object。这也就是在泛型技术出现之前的弊端,不能很明确的一眼看上去就知道里面是什么类型的元素,泛型技术出来之后,我们可以这样定义集合:List<Person> list = new ArrayList()<Person>;这样在看上去是不是就是一个“数组”了,因为定义时限定了要存的对象类型,所以在存进去就是person了,而不是默认的object了。 |