質問

に変換する際に2体までの UnitConverter.いつ、どのようにする変換係数。例えば:

public static final Unit<Length> KILOMETRE = METER.times(1000);
public static final Unit<Length> CENTIMETRE = METRE.divide(100);

思変換係数のプログラムからコンバーターインタフェース(すなわち1000b/wキロメートルやメータまたは1/100の場合はセンチメートルをメートル)

くに位を取得すこれらの情報からUnitConverterインターフェース。

EDIT1

protected double getConvFactor(Unit<Length> from, Unit<Length> to) {
    double factor = -1;

    UnitConverter unitConverter = from.getConverterTo(to);

    if (unitConverter instanceof MultiplyConverter) {
        MultiplyConverter multiplyConverter = (MultiplyConverter) unitConverter;
        factor = multiplyConverter.getFactor();
    } else if (unitConverter instanceof AddConverter) {
        AddConverter addConverter = (AddConverter) unitConverter;
        factor = addConverter.getOffset();
    } else if (unitConverter instanceof RationalConverter) {
        RationalConverter rationalConverter = (RationalConverter) unitConverter;
        double divisor = rationalConverter.getDivisor().doubleValue();
        double dividend = rationalConverter.getDividend().doubleValue();
        factor = divisor;
    }
}
役に立ちましたか?

解決

編集後、更なるコードが投稿したOP:

UnitConverter 抽象クラスですでに由来することが定められていますの作成コンバータの特定の単位です。

いてクラスから派生 UnitConverter, だッチでインターフェースのデザイナーのスク以外のリスクにしたくなる方法を返します増殖因子です。

を見ているのjscienceの派生クラス UnitConverter:

  • MultiplyConvertergetFactor() 方法を返します因子に変換します。
  • AddConvertergetOffset() 方法を返しますオフセットのコンバータを追加しに変換します。
  • RationalConverter, れば、私の理解で正確に変換するを乗じた値に変換して 二番号の配当金のdivisor.このクラスは方法 getDividend()getDivisor() 還元、配当金の除数"で使えを行う部門は自分自身近似商.

と思いコード(下)ではエラーになります。の因子ではないdivisorとお揃いのでしょう.

RationalConverter rationalConverter = (RationalConverter) unitConverter;
double divisor = rationalConverter.getDivisor().doubleValue();
double dividend = rationalConverter.getDividend().doubleValue();
factor = divisor;
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top