泛型 一般 出现在集合中,迭代器中 也会出现!
泛型 是为了 提高代码的 安全性。 泛型 确保数据类型的唯一性。
在我们常用的容器中, 越是 单一 约好处理啊!
泛型的限定:
? 是通配符 指代 任意类型
泛型的限定上限:
<? extends E> 接受 E 或者 E 的子类型。
泛型的限定下限:
<? super E> 接收 E 或者 E 的父类。
泛型的限定上限 (定义父类 填装子类 类型!)
代码:
package stu.love.v; import java.util.*; //泛型限定上限的应用 class Demo12 { public static void main(String[] args) { Collection<Student> c = new ArrayList<Student>(); c.add(new Student("zhaosi",23)); c.add(new Student("lisi",25)); c.add(new Student("wangwu",20)); //TreeSet(Collection<? extends E> c) // class TreeSet<E> //{ //} TreeSet<Person> ts = new TreeSet<Person>(c); Iterator<Person> ite = ts.iterator(); while(ite.hasNext()) { sop(ite.next()); } } public static void sop(Object obj) { System.out.println(obj); } }
泛型的限定下限:(一般用于定义 迭代器: 只需定义 父类类型的迭代器,否则 面向具体的话,扩展性和维护性不好!)
代码:
package stu.love.v; import java.util.*; import stu.love.v.Demo11; /*// 子类 特殊的 比较器 Student class ComByAge implements Comparator<Student> { public int compare(Student s1,Student s2) { int num = new Integer(s1.getAge()).compareTo(new Integer(s2.getAge())); if(num==0) return s1.getName().compareTo(s2.getName()); return num; } } // 子类 特殊的 比较器 Teacher class ComByAge2 implements Comparator<Teacher> { public int compare(Teacher s1,Teacher s2) { int num = new Integer(s1.getAge()).compareTo(new Integer(s2.getAge())); if(num==0) return s1.getName().compareTo(s2.getName()); return num; } }*/ //父类的比较器 <Person> class CompareByAge implements Comparator<Person> { public int compare(Person s1,Person s2) { int num = new Integer(s1.getAge()).compareTo(new Integer(s2.getAge())); if(num==0) return s1.getName().compareTo(s2.getName()); return num; } } class Demo13 { //TreeSet<E>(Comparator<? super E> comparator) 定义比较器时,可以是E类型,还可以是E的父类型,E在创建集合对象时确定 public static void main(String[] args) { TreeSet<Student> t1 = new TreeSet<Student>(new CompareByAge()); t1.add(new Student("zhaosi",23)); t1.add(new Student("lisi",25)); t1.add(new Student("wangwu",20)); TreeSet<Teacher> t2 = new TreeSet<Teacher>(new CompareByAge()); t2.add(new Teacher("wang",38)); t2.add(new Teacher("lilaoshi",48)); t2.add(new Teacher("zhanglaoshi",58)); } }
时间: 2024-10-06 15:45:44