JScienceで新しい距離単位を定義したいと考えています。プロジェクト Web サイトの「チュートリアル」セクションは、Javadoc につながっているだけです。Javadoc はかなり完成していますが、自分のユニットを実際にどのように定義するかを理解するには、少し密度が高すぎます。
例を挙げていただけますか?
乾杯。
ピート
JScienceで新しい距離単位を定義したいと考えています。プロジェクト Web サイトの「チュートリアル」セクションは、Javadoc につながっているだけです。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 のユニットに関するこの他の SO の質問が役に立ちます。
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 の一部です ( JScience ではなくhttps://github.com/unitsofmeasurement/unit-riですが、最終的には V5 でも新しい標準に移行する可能性があります)。