UCUM UnitFormat для JSR 363

Я использую JSR 363 "Единицы измерения" с последней эталонной реализацией:

<dependency>
  <groupId>javax.measure</groupId>
  <artifactId>unit-api</artifactId>
  <version>1.0</version>
</dependency>

<dependency>
  <groupId>tec.units</groupId>
  <artifactId>unit-ri</artifactId>
  <version>1.0.2</version>
</dependency>

Я хочу распечатать "миллилитры" в формате UCUM, то есть "мл":

final UnitFormat unitFormat =
    ServiceProvider.current().getUnitFormatService().getUnitFormat();
final Unit<?> unit = MILLI(LITRE);
final String unitString=unitFormat.format(unit);

К сожалению, это дает мне "мл", а не "мл" от UCUM. И хотя спецификация JSR 363 (и исходный код) дразнит меня повсюду ссылками на UCUM, UnitFormatService.getAvailableFormatNames() на RI только дает мне "ASCII" и "по умолчанию", поэтому я не могу использовать getUnitFormat("UCUM") поскольку спецификация JSR 363 намекает на то, что я должен быть в состоянии сделать (если только кто-то будет поддерживать UCUM).

Так где же взять JSR 363 UnitFormat реализация поддержки UCUM?

1 ответ

См. Модуль расширения JSR 363 https://github.com/unitsofmeasurement/uom-systems/tree/master/ucum-java8 для поддержки UCUM.

Он обеспечивает поддержку унифицированного кода для единиц измерения в Java SE 8. В настоящее время UCUM является более мощным и обширным, анализ использует SymbolMap концепция (основанная на Java ResourceBundles, хотя она не зависит от локальных условий), поэтому мы не можем сделать ее доступной для RI JSR 363. Пожалуйста, используйте совместимый Java SE 8 порт UoM SE, если можете.

В UCUM и l (строчные буквы ell) и L используются для литра. Нижний регистр выполнен в континентальном европейском стиле, верхний регистр - в американском стиле. Оба эквивалентны в UCUM. Так что это просто вопрос стиля.

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