Как сравнить два объекта Quantity JSR-363?
Я пытаюсь использовать JSR-363 Quantity для управления некоторыми количествами в моем приложении. У меня есть код, похожий на следующий, который я хотел бы преобразовать для использования класса Quantity.
Double volume1 = 14d;
Double volume2 = 18d;
Assert.isTrue(volume1 < volume2);
Используя Quantity, я пытаюсь найти способ сравнить два тома, но, похоже, в API нет ничего, что эквивалентно простому сравнению выше!
Quantity<Volume> volume1 = Quantities.getQuantity(14d, Units.LITRE);
Quantity<Volume> volume2 = Quantities.getQuantity(18d, Units.LITRE);
Assert.isTrue(volume1 < volume2); <--- operator < doesn't exist
Что мне не хватает?
2 ответа
<
работает только с примитивными числовыми типами (и эквивалентами в штучной упаковке). Вы не можете использовать его с объектами.
Использовать volume1.substract(volume2).getValue().doubleValue() < 0
вместо.
Оказывается, есть более новая спецификация для единиц измерения и эталонная реализация, которая предоставляет класс ComparableQuantity, реализующийjava.lang.Comparable
.
Тогда более новый стандарт - JSR-385, а его эталонная реализация - Indriya.
С этим можно делать:
ComparableQuantity<Volume> volume1 = Quantities.getQuantity(14d, Units.LITRE);
ComparableQuantity<Volume> volume2 = Quantities.getQuantity(18d, Units.LITRE);
Assert.isTrue(volume1.isGreaterThan(volume2));
Assert.isTrue(volume2.isLessThan(volume1));