UCUM UnitFormat for JSR 363

时间:2017-03-07 16:36:10

标签: java units-of-measurement jsr363 ucum

我正在使用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>

我想打印出&#34;毫升&#34;以UCUM格式,即&#34; mL&#34;:

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

不幸的是,这给了我&#34; ml&#34;,而不是&#34; mL&#34;来自UCUM。即使JSR 363规范(和源代码)在整个过程中引用了UCUM,但{RI}只给了我&#34; ASCII&#34;和&#34;默认&#34;,所以我不能使用UnitFormatService.getAvailableFormatNames(),因为JSR 363规范暗示我应该能够做到(如果只有某人支持UCUM)。

那么我在哪里可以获得支持UCUM的JSR 363 getUnitFormat("UCUM")实现?

2 个答案:

答案 0 :(得分:0)

在UCUM中, l (小写字母ell)和 L 均用于升。小写字母是欧洲大陆风格,大写字母是美国风格。两者在UCUM中是等效的。因此,这只是一个样式问题。

答案 1 :(得分:-1)

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