问题标签 [jsr363]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1199 浏览

java - JSR 363 添加新单位

我正在使用JSR 363 的参考实现:来自 maven (tec.units:unit-ri) 的测量单位 API。

现在我必须添加一些单位,如茶匙、液量盎司等。

我扩展 Units 类以添加一个新单元,如下所示:

这似乎适用于转换,但“tsp”没有解析,那么如何将它添加到解析器?

我在添加华氏温度时遇到问题,例如:T(°F) = T(K) × 9/5 - 459.67

如何使用转换器执行此操作,还是必须扩展 UnitConverter 并创建自己的?

0 投票
1 回答
265 浏览

jsr363 - 使用 jsr 363 库在英里和公里之间进行单位转换

嗨,我是使用 jsr 363 进行单位转换应用程序的新手。任何人都可以帮助我使用 jsr 363 库(uni-api)在英里和公里之间进行转换

0 投票
4 回答
999 浏览

java - Java 度量单位库加法和减法返回不正确的值

我正在使用 JSR363 的参考实现。我已经尝试了很多变体,但我会以这段代码为例。

这将打印 503.0 m。显然有些地方很不对劲,这应该是 3.05 m。我很难相信这实际上是图书馆的一个错误,我希望有人能告诉我我错过了什么。

0 投票
1 回答
60 浏览

java - 基于jsr363创建经度类型

您将如何创建基于 JSR363 API 的经度类型?

例如,经度可以表示为 ]-pi,+pi] 弧度之间或 ]-180,180] 度之间的双倍。如果将 20 度添加到 175 度经度,则得到 -165 度。这意味着 add() 方法需要处理包装,但我不知道如何扩展当前的实现。

@cneller:是的,它会以某种方式实现 Quantity<Angle> ,但它可能很简单:

但这不适用于当前的实现,因为它在内部调用 Quantities.getQuantity(..),这是一种不了解经度的工厂。

0 投票
2 回答
592 浏览

java - JSR 363 的 UCUM 单元格式

我正在使用具有最新参考实现的 JSR 363“测量单位”:

我想以UCUM格式打印出“毫升”,即“mL”:

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

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

0 投票
0 回答
127 浏览

units-of-measurement - 升的 UCUM 表示

我对UCUM如何定义“升”的符号感到困惑。是的,我知道历史l上已使用该符号,并且最近L已被标准机构(参见例如 BIPM SI 第 8 版)添加为l. 但我认为 UCUM 应该给我们一个单一的、明确的交换符号集。

但是更仔细地阅读 UCUM,我发现它提供了区分大小写和不区分大小写的符号版本。此外,我看到,为了区分大小写,“liter”被定义了两次,一次是区分大小写的符号,l另一次是区分大小写的符号L。所以我解释这个的方式是,如果你在一个区分大小写的环境中,实际上有两个升符号,lL,它们都意味着同样的事情(有效地使符号不区分大小写——嘘!) .

因此,如果我对此的解释正确,则意味着如果程序支持 UCUM,即使它以区分大小写的方式这样做, _a UCUM 程序也必须始终将land解释L为同义词,包括派生单位,例如ml/ mL。这是正确的解释吗?UCUM 是否强制我们对某些符号进行等价查找?

正确解释 UCUM 会对其实施产生直接影响。以 JSR 363(请参阅 JSR 363的 UCUM UnitFormat)为例,它取代了 JSR 275(声称支持 UCUM 但从未支持),后者已将 UCUM 支持拉到 Eclipse UOMo;阅读这个可怕的故事。所以我坚持使用 JSR 363 参考实现,它将毫升序列化为ml. 那么当 UOMo 最终添加对 JSR 363 的 UCUM 支持时,它是否会认为m“来自 JSR 363 RI 的序列化和来自 UCUM 的“mL”是可互换的?

Werner Keil 告诉我(在前面提到的线程中)UCUM 认为lL是“两个不同的不同单位”。但是ucum.js 认为它​​们是相同的单位

所以这是我的具体问题:我正在使用 JSR 363 RI 序列化单位,生产l升。我更喜欢 UCUM 实现,但这就是现在可用的全部。如果我使用这个实现,它将使用l而不是生成大量数据L。当我的代码最终升级到 UCUM 实现时,它会认为当前序列化的l数据等同于L,还是认为数据与使用L单位的数据不同?UCUM 规范说应该发生什么?

让我换一种方式问这个问题:假设我要编写自己的 JSR 363 的 UCUM 实现。如果我UnitFormat.parse(CharSequence csq)解析land L,结果应该unitLowercaseL.equals(unitUppercaseL)返回true还是false根据 UCUM 规范和 JSR 363?

0 投票
1 回答
845 浏览

java - Jackson 模块签名阻止为自引用泛型类型添加序列化程序

我想为 JSR 363 添加一个自定义序列化器和反序列化器javax.measure.Quantity<Q extends Quantity<Q>>,它基本上封装了一个“值”和一个“单元”。创建序列化器 ( extends JsonSerializer<Quantity<?>>) 和反序列化器 ( extends StdDeserializer<Quantity<?>>) 很容易。

但是注册它们并不容易。对于解串器,没关系;看签名:

请注意,反序列化器允许扩展泛型类型。所以我可以这样做:

但是序列化器是另一回事。查看其注册的签名:

哦,由于受限制的泛型类型而导致的痛苦。我不能做到这一点:

这是因为Quantity.class永远不会给我一个Class<Quantity<Q extends Quantity<Q>>。并且没有简单的转换,没有在模块方法中引入一些任意的泛型变量并使用杂技演员。即使这样也行不通:

我能做的最好的事情是让我的序列化程序类QuantityJsonSerializer<Q extends Quantity<Q>> extends JsonSerializer<Q>,然后在模块中将其注册为原始类型:

呃,有多丑?但这是我能找到让它工作的唯一方法之一,我不得不通过更多的体操来消除警告。

当然SimpleModule.addSerializer(),它的泛型参数可能会更灵活一些,类似于SimpleModule.addDeserializer()?

我在这里报告这个问题是因为 Jackson 项目说要在这里报告错误 --- 而且我也在寻求更好的解决方法的想法。谢谢。

0 投票
1 回答
343 浏览

java - JSR 363:以分升为单位形成体积单位

格式化体积单位以毫升和厘升为单位可以正常工作,但无法以分升为单位。

此代码打印:

如何格式化体积单位“DECILITRE”以显示“dl”?

0 投票
1 回答
106 浏览

java - 如何使用 JSR-363 定义自定义单位(或预定义数量)“滚动”?

如何使用 JSR 363 定义一个名为 roll 的自定义单元?如何将其定义为长度的预定义数量,例如一卷总是 250 米?如果卷没有固定长度,我如何将其定义为完全独立的基本单元?

我正在使用tec.uom:uom-se:1.0.2. 我尝试添加一个新单元,如JSR 363 添加新单元,但addUnit方法是私有的,因此无法从扩展类中调用它。

0 投票
1 回答
553 浏览

java - 如何使用 Java Measurement API 更改单元上的标签?

问题介绍

我正在尝试使用Java Units of Measurement (JSR 363) 的这种实现

我想改变几个提供的单位的行为。一个例子是DEGREE_ANGLE,因此度数符号 (°) 被附加到任何 Quantity 被toString'd 的末尾。就像现在一样,数量将打印6.1345983929 [rad?]

解决方案的尝试

我已经尝试了很多不同的方法来实现这一点,但似乎在其他示例中存在的一种方法AbstractSystemsOfUnits (例如来自此用于度量单位实现的统一代码)是使用如下静态块:

我试图通过扩展我正在使用的实现Units类来调整这个解决方案。

还有一个尝试使用这个扩展的简单测试:

给我115.157658975 [rad?]

问题

如何使用 JSR 363 API 更改单元上的标签?