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 /////////////////////////////////////////////////////////////////