对比通配符上限语法定义,看下面的通配符下限语法
我们先看一个TreeSet类
接下来我们用下限的构造函数做一个案例
案例说明 首先给上一章节创建的Animal,Cat Minicat类各创建一些成员
创建好后,我们看下TreeSet在JDK里面的使用
实现3个外部比较器:
结果是按照年龄排序的
给TreeSet指定比较器1
给TreeSet指定比较器3,就不对了,根本原因是通配符下限的使用
总结,这个TreeSet的设计其实也是很巧妙合理的,
因为我们去构建子类对象时,必然先构建父类对象,这个时候呢,父类成员就已经被初始化了,所以我们根据父类成员Animal去比较的话是能够成立的;
相反创建子类对象(Cat)时并不能创建孙类对象(MiniCat),所以如果我们传递孙类对象比较器的话,
孙类成员并没有初始化,如果使用比较器3的话会产生空引用的。



