簡體   English   中英

數量計量單位過濾器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM