如题,最近公司的tesflight app突然就报这个错,导致排序列表无法显示,起初看到这个错:
[Comparison method violates its general contract!],再看看定位到的Comparator的compare方法,一头雾水,看compare方法的源码说明,根本没提到会报这个错,而且这项目的代码好久都没更新,怎么突然就报错了,大无语!
看了半天没有头绪,只好求助万能的google,发现这个错确实跟compare方法有关,详情可以参考这篇文章,具体到我自己的情况,主要是因为代码中需要对参数先进行特定校验,如果是特定值则返回-1,但之前的代码只对第一个参数进行了处理,忽略了第二个参数,导致违反了自反性,再加上之前打包机估计升级了jdk版本,就出现了这个报错。
记录一下这个问题,compare里的逻辑还是需要满足自反性,传递性,对称性,否则坑的就是以后的自己。