java ? super E 和 ? extends E

Posted yimian

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java ? super E 和 ? extends E相关的知识,希望对你有一定的参考价值。

/**
     * 泛型固定下边界
     * ? super E  
     * 
     * 泛型固定上边界
     * ? extends E
     */
    public static void main(String[] args) {
        //demo1();
        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);
    }

    public static void demo1() {
        ArrayList<Student> list1 = new ArrayList<>();
        list1.add(new Student("张三", 23));
        list1.add(new Student("李四", 24));
        
        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;
    }
    
}

 

以上是关于java ? super E 和 ? extends E的主要内容,如果未能解决你的问题,请参考以下文章

Java泛型<? extends T>和<? super T>

Java泛型中extends和super的理解(转)

关于java中TreeSet类的一些问题

Java:非静态嵌套类和 instance.super()

java随笔:super关键字

HDU1087:Super Jumping! Jumping! Jumping!(上升子序列最大和)