簡體   English   中英

Java - JScience定義了一個新單元

[英]Java - JScience define a new unit

我想在JScience中定義一個新的距離單位。 項目網站的“教程”部分只是導致Javadoc,雖然相當完整,但有點過於密集,我無法理解我實際上如何定義自己的單元。

你能提供一個例子嗎?

干杯。

皮特

我知道這是一個很老的帖子,但是......不管怎樣我會發布答案,也許這對某人有用

為了在JScience中定義自定義單元,您必須擴展SystemOfUnits類並在此定義所有自定義單元。

檢查下面的例子(我正在定義ACRE的單位)

public class MyUnits extends SystemOfUnits 
{
   private static HashSet<Unit<?>> UNITS = new HashSet();

   private static final MyUnits INSTANCE = new MyUnits();

   public static final Unit<Area> ACRE = myUnits((SI.METER.pow(2)).times(4046.8564224).asType(Area.class));

   public static MyUnits getInstance()
   {
      return INSTANCE;
   }    

   @Override
   public Set<Unit<?>> getUnits()
   {
      return Collections.unmodifiableSet(UNITS);
   }

   private static <U extends Unit<?>> U myUnits(U unit)
   {
      UNITS.add(unit);
      return unit;
   }
}

也許這個關於Java單元的其他問題可以提供幫助。

請看看JSR 363 RI如何做到這一點(由JScience 4實現的275的繼任者) https://github.com/unitsofmeasurement/unit-ri/blob/master/src/main/java/tec/units /ri/format/SimpleUnitFormat.java

SimpleUnitFormat的默認風格支持UTF-8,而ASCII適用於可能沒有GUI或有限字符集的有限環境或設備:

DEFAULT.label(MetricPrefix.MICRO(Units.LITRE), "µl"); ASCII.label(MetricPrefix.MICRO(Units.LITRE), "microL");

注意,label()方法將在公共草案的下一個候選版本中引入JSR 363 API。 目前它是RI的一部分( https://github.com/unitsofmeasurement/unit-ri ,而不是JScience,盡管它最終可能會在V5中遷移到新標准)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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