2

我正在使用具有最新参考实现的 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);

不幸的是,这给了我“毫升”,而不是来自 UCUM 的“毫升”。即使 JSR 363 规范(和源代码)在整个过程中都引用了 UCUM,UnitFormatService.getAvailableFormatNames()但在 RI 上只给了我“ASCII”和“默认”,所以我不能使用getUnitFormat("UCUM")JSR 363 规范提示我应该能够做到(如果只有有人会支持 UCUM)。

那么我在哪里可以获得UnitFormat支持 UCUM 的 JSR 363 实现呢?

4

2 回答 2

2

有关 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

于 2017-04-25T09:38:34.140 回答
1

在 UCUM 中,l(小写 ell)和L都用于表示升。小写是欧陆风格,大写是美式。两者在 UCUM 中是等价的。所以这只是一个风格问题。

于 2019-04-01T01:46:09.933 回答