集合元素的向下转型

本文记录Java学习过程中遇到的集合元素的向下转型~

集合中可以存储任何对象,那么存放进去的数据都是还是原来类型吗?不是,提升成了Object。

在使用集合时,我们需要注意以下几点:

  • 集合中存储其实都是对象的地址。
  • 集合中可以存储基本数值吗?jdk1.5版本以后可以存储了。因为出现了基本类型包装类,它提供了自动装箱操作(基本类型à对象),这样,集合中的元素就是基本数值的包装类对象。
  • 存储时提升了Object。取出时要使用元素的特有内容,必须向下转型。 

示例代码:

Collection coll = new ArrayList();
coll.add("abc");
coll.add("aabbcc");
coll.add("shitcast");
Iterator it = coll.iterator();
while (it.hasNext()) {
//由于元素被存放进集合后全部被提升为Object类型
//当需要使用子类对象特有方法时,需要向下转型
    String str = (String) it.next();
    System.out.println(str.length());
}

注意:如果集合中存放的是多个对象,这时进行向下转型会发生类型转换异常。

提示:Iterator接口也可以使用范型<T>来控制迭代元素的类型的。

示例代码:

Collection<String> coll = new ArrayList<String>();
coll.add("abc");
coll.add("aabbcc");
coll.add("shitcast");
Iterator<String> it = coll.iterator();
while (it.hasNext()) {
    String str = it.next();
    //当使用Iterator<String>控制元素类型后,就不需要强转了。获取到的元素直接就是String类型
    System.out.println(str.length());
}

标签: none