Comparator

来源:1-1 平衡树和AVL

weixin_慕圣6334738

2022-03-02 02:46:11

老实我在做leetcode遇到一个问题需要写一个comparator, 有一个地方我没有太懂,比如下面这个, 


https://img.mukewang.com/climg/621e69d209fc0b7515280224.jpg


为什么我在 compare方法的参数一定要用Integer, 我用int就会报错

写回答

1回答

liuyubobobo

2022-03-02

因为 compareTo 方法的参数实际是泛型类型,而 Java 的泛型类型只能是类,不能是基本类型。Integer 是类,int 是基本类型。


印象里你问过我关于 @Override 的问题,这里就是一个典型可以使用 @Override 的地方。如果你给 compare 方法加一个 @Override,传入 int 类型,就会发现 @Override 的报错了,错误提示就会告诉你,传入 int 参数的函数签名,在父类中找不到。父类中相应的函数签名需要的参数是 Object。(见截图我用红框圈起来的报错信息。)


https://img.mukewang.com/climg/621ea29b0903b33513681070.jpg


这就是我说的:Override 不影响逻辑(不加也可以),但在需要的时候加上,可以帮助你更快地理解你的错误可能发生在哪里,进而预防这类错误。


继续加油!:)

1

算法与数据结构

波波老师5年集大成之作,算法与数据结构系统学习,考试、面试、竞赛通用

2636 学习 · 1090 问题

查看课程

相似问题