Исключение ParseException несовместимо с предложением throws в Comparator.compare(L, L)

#java

#java

Вопрос:

Исключение ParseException несовместимо с предложением throws в Comparator.compare(L, L).

Я работаю на Java 6, поэтому мне нужно реализовать Comparator и переопределить метод compare, а затем создать объект этого класса. В compare я должен проанализировать дату с помощью formatter, что может вызвать ParseException , и я не могу передать ее вызывающему из переопределенного compare.

Комментарии:

1. можете ли вы опубликовать свой код здесь

Ответ №1:

compare Подпись не допускает проверки Exception .

 int compare(T o1, T o2);
  

Вы бы сказали «тогда я просто заключу это в RuntimeException «. Подождите!

JavaDoc говорит

Следует соблюдать осторожность при использовании компаратора, способного устанавливать порядок, несовместимый с equals, для упорядочивания отсортированного набора (или отсортированной карты).

Это означает, что вы создаете то же самое Exception в equals методе? Если да, то это нормально сделать в compare методе, в противном случае перехватите его и верните соответствующее integer значение.

Лично я не выбрасываю (вручную) Exception s из методов упорядочения / равенства, поскольку я запускаю проверки согласованности данных при создании объектов.

Комментарии:

1. Это потрясающе. очень пояснительно. спасибо за ответ 🙂

2. @benignfoppery рассмотрите возможность принятия ответа, если считаете, что оно того стоит. Спасибо!

3. Выполнено. Я был новичком в том, чтобы задавать вопросы в stack, поэтому не знал, как это принять.

4. @benignfoppery Спасибо! Помните, что вас не заставляют соглашаться, только когда ответ хорош и достаточен для решения ваших сомнений / проблемы. Это также благодарность тем, кто отвечает 😉