首页 > 代码库 > 集合中的泛型

集合中的泛型

为什么要有泛型?
  1. 解决元素存储的安全问题(集合没有泛型时,任何类型都可以添加进集合,类型不安全
  2. 解决获取数据元素时,需要类型强转的问题(读取集合元素强转时很繁琐,可能会报 ClassCastException)

关于以上两点的说明:

  1. public class TestGeneric {
  2. @Test
  3. public void test() {
  4. List list = new ArrayList();
  5. list.add(78);
  6. list.add(91);
  7. list.add(65);
  8. list.add(new String("cdf"));// 任何类型都可以添加进集合,而本意只想添加 Integer 类型
  9. Iterator iterator = list.iterator();
  10. while (iterator.hasNext()) {
  11. int i = (Integer) iterator.next();// 有 ClassCastException 的隐患
  12. System.out.println(i);
  13. }
  14. }
  15. }

使用泛型解决以上问题:
  1. public class TestGeneric {
  2. @Test
  3. public void test() {
  4. List<Integer> list = new ArrayList<Integer>();
  5. list.add(78);
  6. list.add(91);
  7. list.add(65);
  8. // list.add(new String("cdf")); 此时只能添加 Integer 类型,添加 String 类型数据会报错
  9. Iterator<Integer> iterator = list.iterator();
  10. while (iterator.hasNext()) {
  11. int i = iterator.next();// 没有报 ClassCastException 隐患
  12. System.out.println(i);
  13. }
  14. }
  15. }
注意:泛型只能填引用类型;JDK 7.0之后,后面的尖括号内的泛型可以省略

集合中的泛型