如題,最近公司的tesflight app突然就報這個錯鬼雀,導(dǎo)致排序列表無法顯示,起初看到這個錯:
[Comparison method violates its general contract!]蛙吏,再看看定位到的Comparator的compare方法源哩,一頭霧水,看compare方法的源碼說明鸦做,根本沒提到會報這個錯励烦,而且這項目的代碼好久都沒更新,怎么突然就報錯了泼诱,大無語坛掠!
看了半天沒有頭緒,只好求助萬能的google,發(fā)現(xiàn)這個錯確實跟compare方法有關(guān)屉栓,詳情可以參考這篇文章舷蒲,具體到我自己的情況,主要是因為代碼中需要對參數(shù)先進(jìn)行特定校驗友多,如果是特定值則返回-1牲平,但之前的代碼只對第一個參數(shù)進(jìn)行了處理,忽略了第二個參數(shù)域滥,導(dǎo)致違反了自反性纵柿,再加上之前打包機估計升級了jdk版本,就出現(xiàn)了這個報錯启绰。
記錄一下這個問題藐窄,compare里的邏輯還是需要滿足自反性,傳遞性酬土,對稱性荆忍,否則坑的就是以后的自己。