新建一个子类BaseStudent 继承其父类Student
package com.soar.bean;
public class BaseStudent extends Student {
public BaseStudent(String name, int age) {
super(name, age);
}
public BaseStudent() {
}
}
新建一个Genric类
package com.saor.collections;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.TreeSet;
import com.soar.bean.BaseStudent;
import com.soar.bean.Student;
public class Demo2_Genric {
/*
* 泛型固定下边界
* ? super E
*
* 泛型固定上边界
* ? extends E
*/
public static void main(String[] args) {
//demo_extends();
TreeSet<Student> ts1 = new TreeSet<>(new CompareByAge());
ts1.add(new Student("张三",33));
ts1.add(new Student("李四",13));
ts1.add(new Student("王五",23));
ts1.add(new Student("赵六",43));
TreeSet<BaseStudent> ts2 = new TreeSet<>(new CompareByAge());
ts2.add(new BaseStudent("张三",33));
ts2.add(new BaseStudent("李四",13));
ts2.add(new BaseStudent("王五",23));
ts2.add(new BaseStudent("赵六",43));
//使用了父类的比较器
System.out.println(ts2);
}
private static void demo_extends() {
//父类 →固定了上边界E (Student)
ArrayList<Student> list1 = new ArrayList<>();
list1.add(new Student("张三",23));
list1.add(new Student("李四",24));
//子类→将上边界的E的子类(BaseStudent)添加到父类(Student)中,?代表的是E的子类
ArrayList<BaseStudent> list2 = new ArrayList<>();
list2.add(new BaseStudent("王五",25));
list2.add(new BaseStudent("赵六",26));
list1.addAll(list2);
}
}
class CompareByAge implements Comparator<Student>{
@Override
public int compare(Student s1, Student s2) {
int num = s1.getAge() - s2.getAge();
return num ==0 ? s1.getName().compareTo(s2.getName()) : num;
}
}