ArrayList 可存放各种数据类型吗

来源:百度知道 编辑:UC知道 时间:2024/05/14 07:51:17
行不?
听说取出来时要强制转换类型,是为什么?

你可以查一下J2SE的API文档.

在ArrayList类里的add(Object o)方法里,需要传入的参数为Object类型.

而get(int index)方法的返回类型也为Object类型!

所以,从ArrayList里取出值时要强制转换类型!!

比如:
ArrayList list = new ArrayList();
list.add("a"); //向list内添加一个字符串!!
String str = (String) list.get(0); //从list内将这个字符串取出来并赋给字符串变量a; 因为get(0);返回的是Object类型的"a",而接收它的变量str的数据类型为String,所以要将list.get(0)强制转换为字符串;

如果用Object类型去接受的话就不需要类型转换了!!

Object obj = list.get(0);

是存放对象(类),不是数据类型。JAVA中所有对象都继承自Object。存放的对象也会被封装成Object添加到ArrayList。所谓数据类型也是自动封装成Object后进入ArrayList,取出来的自然是Object对象。Object对象是不能直接使用的,所以需要强制转换成你放入时的对象。

所以ArrayList.add();存放的就是Object,你所奇怪的放入数据类型或者其他类,取的时候变成Object,那是Java自动封装的缘故。

-----------------------------------------------------------
怎么说呢?强制转换只能出现在有继承关系的类,并且是父类向子类转换。
我的理解它就是一种转换方式。

父类 A = new 子类 这是可以了
但是
子类 B = new 父类 只是不允许的

举例吧,这个意思就有点想,儿子像父亲,没有哪个会说是父亲像儿子的。
都是先有父亲后有儿子。Java语法也