Comparator的compare方法怎么就报Comparison method violates its general contract!

如题,最近公司的tesflight app突然就报这个错,导致排序列表无法显示,起初看到这个错:
[Comparison method violates its general contract!],再看看定位到的Comparator的compare方法,一头雾水,看compare方法的源码说明,根本没提到会报这个错,而且这项目的代码好久都没更新,怎么突然就报错了,大无语!

看了半天没有头绪,只好求助万能的google,发现这个错确实跟compare方法有关,详情可以参考这篇文章,具体到我自己的情况,主要是因为代码中需要对参数先进行特定校验,如果是特定值则返回-1,但之前的代码只对第一个参数进行了处理,忽略了第二个参数,导致违反了自反性,再加上之前打包机估计升级了jdk版本,就出现了这个报错。

记录一下这个问题,compare里的逻辑还是需要满足自反性,传递性,对称性,否则坑的就是以后的自己。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容