aşağıda hatası alıyorum kontrol ettikten sonra genel sözleşme ihlalKarşılaştırma yöntemi bile boş
aktivitesini devam ettirmek için açılamıyor {com.xxx.yyy.zzz.HomeActivity} : java.lang.IllegalArgumentException: Karşılaştırma yöntemi, ihlal genel sözleşme!
Dize için boş durumları ele alıyorum bile bu hata geliyor. Neyin yanlış olabileceğine dair ipuçları.
public class ConversationComparer implements Comparator<Conversation> {
@Override
public int compare(Conversation x, Conversation y) {
if (x.getLastMessageDate() == null) {
return 1;
}
if (y.getLastMessageDate() == null) {
return -1;
}
return y.getLastMessageDate().compareTo(x.getLastMessageDate());
}}
public java.util.Date getLastMessageDate() {
return lastMessageDate;
}
altına Kod Bu i karşılaştırıcı
if (conversationListAdapter != null) {
Collections.sort(this.list,new ConversationComparer());
conversationListAdapter.notifyDataSetChanged();
}
getlastmessage is java.util.Date – ila
Bu antisimetrik değildir. X == null' ve 'y.getLastMessageDate() == null' olduğunu varsayalım. Daha sonra karşılaştırın (x, y) == 1' ve '((x, y) == 1'i karşılaştırın. –
Bu durumda istisnanın compareTo yönteminden geldiğini düşünmüyorum. Date.compareTo, InvalidArgumentException vermiyor. Belki tüm yığın izini sağlarsınız. – Till