泛型
泛型的作用:標識集合中保存的元素
* 好處:
* 1.操作數據更加安全(規範集合中能保存的數據)
* 2.可以避免向下轉型(強轉類型)的麻煩
* 3.將運行時的錯誤轉到編譯時報錯
ArrayList<Student> list = new ArrayList<Student>();
list.add(new Student("肖鋒", 11));
list.add(new Student("坤", 52));
list.add(new Student("大海", 22));
// 從集合中取出一個元素
Object object = list.get(0);
Student student = (Student) object;
System.out.println(student.getName());
// 從集合中取出一個元素 強轉成 工人類型 調用工人的方法
// 不加泛型 獲取到集合中的元素 元素的類型你可以隨便強轉
// 沒有約束 編譯都會通過
// 加上泛型 可以在編譯時 有錯誤提示 讓集合中保存的元素更加安全
泛型的另一種寫法
* ? extends E
* 問號是子類 E是父類
* 只能使用父類的子類 或者本類 也叫 向下限定
// 創建一個person集合 保存兩個person
ArrayList<Person> list1 = new ArrayList<>();
list1.add(new Person("wang1", 11));
list1.add(new Person("wang2", 11));
// 常見一個student 集合 保存兩個student
ArrayList<Student> list2 = new ArrayList<>();
list2.add(new Student("peng1", 21));
list2.add(new Student("peng2", 21));
// addAll(Collection<? extends E> c)
list1.addAll(list2);
list2.addAll(list1); //向子類中添加父類的集合 這時就會報錯
System.out.println(list1);