在JScience

时间:2015-05-07 14:12:29

标签: java units-of-measurement jscience

我们有一个系统,用户可以提供任何单位的数据。数据被存储并可能转换为相同维度的任何其他单元。它基于JScience api。

我希望生成所有受支持单位的列表,以及他们拥有的所有别名。我似乎找不到这样做的方法。目前我正在这样做:

    for (javax.measure.unit.Unit<?> unit: javax.measure.unit.SI.getInstance().getUnits())
        System.out.println(UnitFormat.getInstance().format(unit));

    for (javax.measure.unit.Unit<?> unit: javax.measure.unit.NonSI.getInstance().getUnits())
        System.out.println(UnitFormat.getInstance().format(unit));

首先,这只会产生一个标签列表,我无法找到一种方法来获取别名。

其次,它似乎甚至不包含所有单位。如果我查看反编译文件javax.measure.unit.UnitFormat,它似乎是附加所有标签的位置;我看到了这句话:

DEFAULT.label(NonSI.ROENTGEN, "Roentgen");

但我没有看到&#34; Reontgen&#34;在输出中。有没有人有解决方案?

1 个答案:

答案 0 :(得分:1)

您可能需要先尝试JSR 363。它是JScience 4和JSR 275的继任者,JSR 363于2016年9月完成了这项任务,但从未进行过最终决定。

JSR 363知道多个单位系统,但是我们只需要内置到RI中。您可以应用名为SystemOfUnitsReporter的库实用程序并按如下方式应用它:

import tec.units.ri.unit.Units;
import tec.uom.lib.common.util.SystemOfUnitsReporter;

SystemOfUnitsReporter reporter = SystemOfUnitsReporter.of(Units.getInstance());
reporter.report();

这将打印出SystemOfUnits实施中的单位列表到控制台。