如題,最近公司的tesflight app突然就報這個錯,導致排序列表無法顯示,起初看到這個錯:
[Comparison method violates its general contract!],再看看定位到的Comparator的compare方法,一頭霧水,看compare方法的源碼說明,根本沒提到會報這個錯,而且這項目的代碼好久都沒更新,怎么突然就報錯了,大無語!
看了半天沒有頭緒,只好求助萬能的google,發現這個錯確實跟compare方法有關,詳情可以參考這篇文章,具體到我自己的情況,主要是因為代碼中需要對參數先進行特定校驗,如果是特定值則返回-1,但之前的代碼只對第一個參數進行了處理,忽略了第二個參數,導致違反了自反性,再加上之前打包機估計升級了jdk版本,就出現了這個報錯。
記錄一下這個問題,compare里的邏輯還是需要滿足自反性,傳遞性,對稱性,否則坑的就是以后的自己。