1 /* 2 * a. 泛型的好处 3 * 提高安全性(将运行期的错误转换到编译期) 4 * 省去强制类型转换的麻烦 5 * b. 泛型基本使用 6 * <>中放的必须是引用数据类型 7 * c.泛型使用的注意事项 8 * 前后的泛型必须一致,或者后面的泛型可以省略不写(1.7新特性菱形泛型) 9 */ 10 public static void main(String[] args) { 11 12 ArrayList<Person> list = new ArrayList<Person>(); 13 list.add(new Person("张三", 19)); 14 list.add(new Person("李四", 20)); 15 Iterator<Person> it = list.iterator(); 16 while (it.hasNext()) { 17 Person p = it.next(); 18 System.out.println(p.getName() + "..." + p.getAge()); //张三...19 李四...20 19 20 //System.out.println(it.next().getName() + "..." + it.next().getAge()); 21 //张三...20 当使用next()方法的时候需要注意,不能直接用it.next()调用属性或方法,只能调用一次next()方法,否则就会造成数据错位 22 } 23 } 24 25 /////////////////////////////////////////////////////////////////////// 26 27 public class Demo3_Generic { 28 29 public static void main(String[] args) { 30 31 } 32 33 } 34 35 interface Inter<T>{ 36 public void show(T t); 37 38 } 39 40 class Deom implements Inter<String>{ 41 //第一种实现类加泛型,推荐用这种方法 42 @Override 43 public void show(String t) { 44 System.out.println(t); 45 } 46 47 } 48 49 class Demo2<T> implements Inter<T>{ 50 //第二种实现类加泛型,因为没有必要在类上加泛型 51 @Override 52 public void show(T t) { 53 System.out.println(t); 54 } 55 56 } 57 58 //////////////////////////////////////////////////////////////////////////// 59 60 public class Demo4_Generic { 61 62 /* 63 * A: 泛型通配符<?> 64 * 任意类型,如果没有明确,那么就是Object以及任意的Java类 65 * B: ? extends E 66 * 向下限定,E及其子类 67 * C: ? super E 68 * 向上限定,E及其父类 69 */ 70 public static void main(String[] args) { 71 72 //List<?> list = new ArrayList<String>(); 73 ArrayList<Person> list1 = new ArrayList<>(); 74 list1.add(new Person("张三", 23)); 75 list1.add(new Person("李四", 24)); 76 77 ArrayList<Worker> list2 = new ArrayList<>(); 78 list2.add(new Worker("王五", 25)); 79 80 list1.addAll(list2); 81 82 System.out.println(list1); 83 84 } 85 86 } 87 88 /////////////////////////////////////////////////////////////////