博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
How to support comparators in our sort implementations?
阅读量:4982 次
发布时间:2019-06-12

本文共 583 字,大约阅读时间需要 1 分钟。

上图是普林斯顿算法课part1.Mergesort章节给出的参考代码,可以发现这个代码有三处警告。造成的隐患就是我们无法在类型检查时发现送入sort()函数的数组元素类型和Comparator的泛型不一样。比如上图就没有报错,但是运行时会抛出异常(如下图):

教授给出的解决方法是向sort()函数传入数组元素自身提供的Comparator,以保证数组元素和Comparator泛型的一致性。但是有没有一种方法可以在类型检查时检查出向sort()传递的数组元素类型和Comparator泛型的不一致并且报错呢?后来经过尝试,发现java的泛型方法机制可以帮助我们达到这个目的。代码如下:

可以发现当送入sort()函数的数组元素为Double而Comparator的泛型为Integer,eclipse能在运行前检查出错误从而提醒用户。需要注意的是定义泛型方法时必须在返回值前边加一个<Item>,否则会报错 (泛型函数使用时不必设置具体泛型参数,它会自动根据传入参数类型来决定自己的泛型类型)   

附上一篇讲解泛型方法的好文:https://www.cnblogs.com/iyangyuan/archive/2013/04/09/3011274.html

转载于:https://www.cnblogs.com/lidunot-fear/p/8058901.html

你可能感兴趣的文章