Чтобы узнать, что вы используете https://docs.oracle.com/javase/tutorial/datetime/iso/period.html Мгновенное значение - это то, что вы сравниваете, но оно также ложно, если оно отрицательное, поэтому вам все равно нужно убедиться, что компилятор не выбросит ошибка с вашим возвратом, в которой не используются символы Паренса , Попробуйте использовать данный тип, затем проверьте критерии. Если это функция, которую вы используете только для определенной c цели в течение одной продолжительности, необходимо обрабатывать различные случаи, такие как 0, ноль и выход за пределы диапазона.
class DurationComparator implements Comparator<Duration> {
@Override
public int compare(Duration o1, Duration o2) {
int d1 = o1 == null ? 0 : o1.getDuration();
int d2 = o2 == null ? 0 : o2.getDuration();
return d2 - d1;
}
}
Это лучшее название для ваш метод все еще дает вам логическое значение при сравнении между ними, используя Instant. Ваше решение только видит, находится ли оно вне диапазона, поэтому, если вы ищете, находится ли оно между ними, вам нужно использовать сравнение, чтобы правильно проверить оба конца Длительности, чтобы это работало.