gpt4 book ai didi

java - 按数量过滤计量单位

转载 作者:行者123 更新时间:2023-12-02 02:43:48 25 4
gpt4 key购买 nike

我们正在使用伟大的unit-of-measurement动态管理单元的框架。我需要按数量过滤单位列表。例如。显示所有质量(吨、千克......)。该列表产生通用捕获列表(这并不理想 - 我知道)。通用信息在运行时不存在(仅在编译时)。然而对于unit接口(interface)存在一个实现来检查兼容性是否存在:

  • boolean isCompatible(Unit that);

    @Test
    public void testCompatible_ByUnit(){
    Unit<Mass> kilogram = Units.KILOGRAM;
    Unit<Mass> tonne = NonSI.TONNE;

    assertTrue(kilogram.isCompatible(tonne));
    }

有没有接口(interface)可以通过quantity检查兼容性?

数量为 Mass 的非工作示例.

    @Test
public void testCompatible_FilterByQuantityAndCapture(){
Unit<?> kilogram = Units.KILOGRAM;
// wish: interface does not exist
assertTrue(kilogram.isCompatible(Mass.class));
}

最佳答案

这是Java语言的一个常见问题,因为Java到目前为止还没有提供Reified Generics .

我不知道该功能已进入 Java SE 9,因此我们可能不会在 Java 10 或更高版本之前看到它。

<Q extends Quantity<Q>> Unit<Q> getUnit(Class<Q> quantityType);

返回给定Quantity类的默认(或系统)单位。尽管维度更像是数量的“保护伞”,但您还可以获得特定维度下所有单位的列表。

Set<? extends Unit<?>> getUnits(Dimension dimension);

在 API/SPI 的 future 版本中,SystemOfUnits 也可能为 Quantity 类提供类似的功能,但这种附加方法很可能不会在底层 Java 平台提供具体化泛型或其他一些比现在更好的类型信息方式之前,这是很有意义的。

关于java - 按数量过滤计量单位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44969585/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com