2017-04-09 10 views
2

ボリューム単位のフォーマットは、ミリリットルとセンチリットルで正しく動作しますが、デシリアルでは失敗します。JSR 363:デシリアント単位のボリューム単位の作成

import static tec.units.ri.unit.Units.LITRE; 

import javax.measure.Unit; 
import javax.measure.format.UnitFormat; 
import javax.measure.quantity.Volume; 
import javax.measure.spi.ServiceProvider; 

import static tec.units.ri.unit.MetricPrefix.*; 

public class Example { 

    public static void main(String[] args) { 

     final UnitFormat unitFormat = ServiceProvider.current().getUnitFormatService().getUnitFormat(); 

     final Unit<Volume> MILLILITRE = MILLI(LITRE); 
     final Unit<Volume> CENTILITRE = CENTI(LITRE); 
     final Unit<Volume> DECILITRE = DECI(LITRE); 

     final String mL = unitFormat.format(MILLILITRE); 
     final String cL = unitFormat.format(CENTILITRE); 
     final String dL = unitFormat.format(DECILITRE); 

     System.out.println(mL); 
     System.out.println(cL); 
     System.out.println(dL); 
    } 
} 

このコードを印刷: "DL" を表示するために、ボリューム単位 "デシリットル" をフォーマットする方法

ml 
cl 
㎥/10000.0 

答えて

0

私たちの注意を喚起してくれてありがとう。 https://github.com/unitsofmeasurement/unit-ri/issues/54 が示すように、接頭辞はすべてSimpleUnitFormatのすべてのユニットに自動的に伝播されません。

実装されてすぐに使用できるユニットについては、SimpleUnitFormatがそれらを知っている必要があります。それが対処できる場合は、チェックアウトします。https://github.com/unitsofmeasurement/unit-ri/issues/60を参照してください。

ほとんどの他のUnitFormat実装。 Java SE 8+の実装uom-seまたは拡張モジュールで見つかったものは、これとは別の方法で処理されます。 SimpleUnitFormatの既知の制限です(これが「単純」と呼ばれています)。これは、Java ME Embeddedを実行している非常に小さなシステムでも同様の動作を保証します。あなたのアプリケーションがJava SE 8以上を使用できるか、Javaバージョンの更新に問題がなければ、これを考慮してください。この時点で、RIはME Embeddedと下位互換性がなければならないため、すべての実装でデフォルトのUnitFormatSimpleUnitFormatです。 Java SEの実装の上に

final UnitFormat unitFormat =  
    ServiceProvider.current().getUnitFormatService().getUnitFormat("EBNF"); 

を呼び出すと、ユニットテストし、それが動作するはずの問題報告の欠如に基づいて、あなたにEBNFUnitFormatを取得します。

よろしく、 ヴェルナー

+0

コードは 'getUnitFormat( "ASCII" を)'を呼び出すことによって動作しますようです。 'SimpleUnitFormat'(バージョン1.0.2)の963行目の' DEFAULT.label(MetricPrefix.DECI(LITER)、 "dl");の行が欠落しているように見えます。 – Andreas

+0

それはスリップしたように見えますが、私たちはそれをuom-seに持っています。指摘してくれてありがとう。これは、今後のアップデートパックに含まれているはずです。復活祭のことを目指しているので、今から一週間1.0.3-SNAPSHOTがすぐに動作しますので、試してみてください。 –