Создание типа долготы на основе jsr363

Как бы вы создали тип Longitude на основе API JSR363?

Долгота может быть представлена, например, в виде двойного между]-pi,+pi] радианами или между]-180,180] градусами. Если вы добавите 20 градусов к долготе 175 градусов, вы получите -165 градусов. Это означает, что метод add() должен обрабатывать перенос, но я не вижу, как расширить текущую реализацию.

@cneller: Да, он каким-то образом будет реализовывать Number, но это могло бы быть так просто:

public class Longitude extends NumberQuantity<Angle> {

    public Longitude(Number number, Unit<Angle> unit) {
        super(normalize(number, unit), unit);
    }

    public static Number normalize(Number angle, Unit<Angle> unit) {
      ...
    }
}

Но это не работает с текущей реализацией, потому что она вызывает Quantities.getQuantity(..) внутренне, что является своего рода фабрикой, которая не знает о Longitude.

1 ответ

Я бы порекомендовал реализовать интерфейс Количество.

Вы можете найти примеры от авторов JSR здесь: http://central.maven.org/maven2/tec/units/unit-ri/1.0.1/unit-ri-1.0.1-sources.jar

Другие вопросы по тегам