我们有一个系统,用户可以提供任何单位的数据。数据被存储并可能转换为相同维度的任何其他单元。它基于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;在输出中。有没有人有解决方案?
答案 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
实施中的单位列表到控制台。