2014-08-14 13:32:34 发布:zhushican
Java的容器有个缺点,就是往容器里面放入对象的时候,会把对象的类型信息给弄丢了。这是因为开发容器类的程序员不会知道你要用它来保存什么类型的对象,而让容器仅只保存特定类型的对象又会影响它的通用性。所以容器被做成只持有Object,也就是所有对象的根类的reference,这样它就能持有任何类型的对象了。当然这不包括primitive,因为它们不是对象,也没有继承别的对象。这是一个很了不起的方案,只是:1、由于在将对象放入容器的时候,它的类型信息被扔掉了,所以容器对“能往里面加什么类型的对象”没有限制。比方说,即使你向让它只持有cat,别人也能很轻易地把dog放进去。2、由于对象的类型信息没有了,容器只知道它持有的Object的reference,所以对象在使用之前还必须进行类型转换。