[英]unit-of-measurement filter by quantity
我們正在使用出色的計量單位框架來動態管理單位。 我需要按數量過濾單位列表。 例如,顯示所有質量(噸,千克....)。 該列表會生成一個通用的捕獲列表(不理想-我知道)。 通用信息在運行時不存在(僅在編譯時)。 但是對於單元接口,存在一個檢查兼容性的實現:
boolean isCompatible(Unit that);
@Test public void testCompatible_ByUnit(){ Unit<Mass> kilogram = Units.KILOGRAM; Unit<Mass> tonne = NonSI.TONNE; assertTrue(kilogram.isCompatible(tonne)); }
有沒有按數量檢查兼容性的接口?
數量為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
類的默認(或系統)單位。 盡管Dimension
更像是數量上的“傘”,但您也可能會獲得特定維度下所有單位的列表。
Set<? extends Unit<?>> getUnits(Dimension dimension);
在API / SPI的未來版本中, SystemOfUnits
可能還會為“ Quantity
類提供類似的功能,但是在基礎Java平台提供經過改進的泛型或其他更好的方法之前,這種附加方法很可能就沒有多大意義了。輸入的信息比實際輸入的信息多。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.