我正在将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格式(即“ mL”)打印“毫升”:

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


不幸的是,这给了我“ ml”,而不是UCUM的“ mL”。即使JSR 363规范(和源代码)在整个UCUM参考中都使我很吃惊,但RI上的UnitFormatService.getAvailableFormatNames()仅给我“ ASCII”和“默认”,因此我不能将getUnitFormat("UCUM")用作JSR。 363规范暗示我应该能够做到(如果只有某人会支持UCUM)。

那么,在哪里可以得到支持UCUM的JSR 363 UnitFormat实现?

最佳答案

有关UCUM支持,请参阅JSR 363扩展模块https://github.com/unitsofmeasurement/uom-systems/tree/master/ucum-java8

它为Java SE 8上的计量单位统一代码提供支持。
目前,UCUM更强大,更强大,解析使用了SymbolMap概念(尽管它对本地不敏感,但基于Java ResourceBundles),因此我们无法将其用于JSR 363 RI。如果可以,请使用兼容的Java SE 8端口UoM SE

10-06 13:29