JSR 363 добавление новых единиц
Я использую эталонную реализацию JSR 363: единицы измерения API от maven (tec.units:unit-ri).
Теперь я должен добавить несколько единиц, таких как чайная ложка, жидкая унция и так далее.
Я расширяю класс Units, чтобы добавить новый модуль следующим образом:
public static final Unit<Volume> TEASPOON = addUnit(new TransformedUnit<Volume>("tsp", CUBIC_METRE, new MultiplyConverter(0.000005)));
Кажется, это работает для преобразования, но "tsp" не разбирает, так как мне добавить его в анализатор?
И у меня возникли проблемы с добавлением Фаренгейта, например: T(°F) = T(K) × 9/5 - 459,67
Как я могу сделать это с конвертерами, или мне нужно расширить UnitConverter и создать свой собственный?
2 ответа
Хотя вы можете определить свой собственный модуль, общие модули, такие как TEASPOON или Fluid Ounce, уже доступны в модулях расширения для JSR 363, таких как https://github.com/unitsofmeasurement/uom-systems
https://github.com/unitsofmeasurement/uom-systems/tree/master/common для библиотеки на основе RI. Фаренгейт тоже там.
Все эти системы или "полная система SI" доступны в публичном репозитории JCenter. В ближайшее время мы планируем также синхронизировать его с MavenCentral, но вы можете использовать его таким же образом из JCenter, если добавите его определение хранилища в файлы сборки Maven (или Gradle и т. Д.).
Спасибо за упоминание. Если вы используете SimpleUnitFormat
(оставив пока Locale), вы можете пропустить выражение label() в нужных местах.
Если у вас есть учетная запись GitHub, подайте ее, пожалуйста, по https://github.com/unitsofmeasurement/uom-systems/issues, и мы постараемся решить проблему как можно скорее. Или подайте пиар.