按数量过滤计量单位
unit-of-measurement filter by quantity
我们正在使用很棒的 unit-of-measurement framework to manage units dynamically. I have the requirement to filter a list of units by quantity. E.g. display all mass (tonne, kg ....). The list results in an generic capture list (which is not ideal - i know). The generic information does not exist at runtime (only at compile time). However for the unit 接口存在一个实现来检查是否存在兼容性:
boolean isCompatible(Unit that);
@Test
public void testCompatible_ByUnit(){
Unit<Mass> kilogram = Units.KILOGRAM;
Unit<Mass> tonne = NonSI.TONNE;
assertTrue(kilogram.isCompatible(tonne));
}
有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);
returns 给定 Quantity
class 的默认(或系统)单位。尽管 Dimension
在数量上更像是 "umbrella",但您还可以获得特定维度下所有单位的列表。
Set<? extends Unit<?>> getUnits(Dimension dimension);
在 API/SPI SystemOfUnits
的未来版本中也可能为 Quantity
class 提供类似的东西,但这种额外的方法很可能会获胜在基础 Java 平台提供具体化的泛型或其他一些比今天更好的类型信息的方式之前,这没有多大意义。
我们正在使用很棒的 unit-of-measurement framework to manage units dynamically. I have the requirement to filter a list of units by quantity. E.g. display all mass (tonne, kg ....). The list results in an generic capture list (which is not ideal - i know). The generic information does not exist at runtime (only at compile time). However for the unit 接口存在一个实现来检查是否存在兼容性:
boolean isCompatible(Unit that);
@Test public void testCompatible_ByUnit(){ Unit<Mass> kilogram = Units.KILOGRAM; Unit<Mass> tonne = NonSI.TONNE; assertTrue(kilogram.isCompatible(tonne)); }
有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);
returns 给定 Quantity
class 的默认(或系统)单位。尽管 Dimension
在数量上更像是 "umbrella",但您还可以获得特定维度下所有单位的列表。
Set<? extends Unit<?>> getUnits(Dimension dimension);
在 API/SPI SystemOfUnits
的未来版本中也可能为 Quantity
class 提供类似的东西,但这种额外的方法很可能会获胜在基础 Java 平台提供具体化的泛型或其他一些比今天更好的类型信息的方式之前,这没有多大意义。