泛型
泛型的作用:标识集合中保存的元素
* 好处:
* 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);