设想一种情况,当把一组Tiger类的实例放入一个容器(List)中,希望按照每个实例的重量从小到大进行排序,应该怎么办?一个标准的容器是有sort()排序方法的,排序需要基于大小的比较,这个比较方法需要通过Tiger类来提供。但是容器都是通用的,在比较的时候容器需要一个通用的引用来指代具体的对象,而这种引用又不适合于使用Object,因为如果那样的话,Object将会非常庞大并且需要对非常多的这种需求提供基础方法。因此需要有一种机制对能力进行说明,并且实现对象通用能力的引用,这就是接口[15]。
由于Java的单根继承结构,所以没法像C++一样通过多重继承来引入更多的能力;而一些能力又不能全部封装进Object基类;一些通用的容器却又需要一种通用的引用来指代不同的类;在这种情况下,通过接口来封装一些通用的能力,具体的类继承接口并且实现这种能力,通用的容器就可以用这个接口引用具体的类实例进行比较了。下面提前透露容器的内容,来看看容器的排序是怎么实现的。
运行结果如下:
sort before[the tiger weight is 498,the tiger weight is 430,the tiger weight is 500,the tiger weight is 488,
the tiger weight is 590](www.xing528.com)
sort after[the tiger weight is 430,the tiger weight is 488,the tiger weight is 498,the tiger weight is 500,
the tiger weight is 590]
Tiger类实现了接口Comparable中的compareTo()方法,此方法会允许继承此接口的类定义实例间的比较方式,这样当把一组实例放入容器后,通过Collections.sort(list)即可快速排序。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。