【发布时间】:2016-11-18 19:22:37
【问题描述】:
这是我在下面抛出异常的代码:
Arrays.sort(listFile, new Comparator<File>() {
public int compare(File f1, File f2) {
return Long.valueOf(f1.lastModified()).compareTo(f2.lastModified());
}
});
我认为这可能是 Java 7 中的 Java 语言更改,但我不知道我必须进行哪些更改才能使其正常工作。非常感谢!
Fatal Exception: java.lang.IllegalArgumentException: Comparison method violates its general contract!
at java.util.TimSort.mergeLo(TimSort.java:743)
at java.util.TimSort.mergeAt(TimSort.java:479)
at java.util.TimSort.mergeCollapse(TimSort.java:406)
at java.util.TimSort.sort(TimSort.java:210)
at java.util.TimSort.sort(TimSort.java:169)
at java.util.Arrays.sort(Arrays.java:2010)
at de.munichsdorfer.screenittrial.contentobserver.MyContentObserver.onChange(MyContentObserver.java:51)
at android.database.ContentObserver.onChange(ContentObserver.java:145)
at android.database.ContentObserver$NotificationRunnable.run(ContentObserver.java:216)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:145)
at android.os.HandlerThread.run(HandlerThread.java:61)
更新:将代码更改为
return Long.valueOf(f1.lastModified()).compareTo(Long.valueOf(f2.lastModified()));
现在显示:
【问题讨论】:
-
请说明您的例外情况