Как сравнить два объекта 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));
Другие вопросы по тегам