黑马程序员技术交流社区

标题: 泛型的使用(一)需求请看注释 [打印本页]

作者: anyway1919    时间: 2015-9-10 23:47
标题: 泛型的使用(一)需求请看注释
  1. package com.review.demo2;
  2. import java.util.ArrayList;
  3. import java.util.Collection;
  4. import java.util.HashSet;
  5. import java.util.Iterator;
  6. import java.util.List;
  7. import java.util.Set;
  8. /**
  9. * 案例:向不同的集合中,只能存储Student和Worker
  10. *
  11. */
  12. public class ConstraintTypeDemo7 {

  13.         public static void main(String[] args) {
  14.                 // 创建一个List集合,存放Dog
  15.                 List<Dog>list1 = new ArrayList<>();
  16.                 //创建一个Set集合,存放Cat
  17.                 Set<Cat> set = new HashSet<>();
  18.                 //存储相同了类型的元素
  19.                 list1.add(new Dog("kitty",2));
  20.                 list1.add(new Dog("jimmy",1));
  21.                 list1.add(new Dog("jone",3));
  22.                 list1.add(new Dog("lasha",5));
  23.                 printCollection(list1);
  24.                 System.out.println("-------------------------------------------------------------");
  25.                 set.add(new Cat("mouse",2));
  26.                 set.add(new Cat("cat",1));
  27.                 set.add(new Cat("cat2",3));
  28.                 printCollection(set);
  29.                
  30.                 List<String>list2 = new ArrayList<>();
  31.                 list2.add("字符串");
  32.                 list2.add("字符串2");
  33.         //        printCollection(list2);  此处编译失败

  34.         }
  35.         /*创建一个输出集合的功能   需求:只能输出打印Dog或者Cat???
  36.          * 当添加通配符的限定后,上面的printCollection(list2)会编译失败
  37.          * 因为:通配符限定list集合中的元素只能是Animal以及其子类
  38.          *
  39.          * */
  40.         public static void printCollection(Collection <?extends Animal>coll){
  41.                
  42.                 //way1遍历
  43.                 /*for (int i = 0; i < list.size(); i++) {
  44.                         System.out.println(list.get(i));
  45.                 }*/
  46.                
  47.                 //way2遍历
  48.                 for (Iterator <?>it = coll.iterator();it.hasNext();) {
  49.                         Object obj =  it.next();
  50.                         System.out.println(obj);
  51.                 }
  52.         }
  53. }
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2