0

実際には Date のサブクラスではなく、とりわけ Date で構成されるクラス TimeParameter があります。私の文脈では、日付または倍精度 (ユリウス日) として頻繁に表されます。非常に頻繁に、TimeParameter は TimeParameter と比較されるのではなく、Date、Double、さらには String (定義済みの形式でコード化された Date) と比較されます。もともと TimeParameter は Comparable インターフェースを実装しており、compareTo(Object o) では o を使用してさらにフォークしました。

if ( o instanceof Date)
    return compareToDate((Date)o);
else if ( o instanceof Double)
    return compareToDouble((Double)o);
else ...

ジェネリックでそれを行う可能性の1つは、次のようなヘルパークラスを使用することです

CompareHelper(Double d) {
    jd = d;
    ...
}
CompareHelper(Date d) {
    jd = getJulianDate(d);
    ...
}

次に、TimeParameter に Comparable<CompareHelper> を実装させ、同様に処理を進めます。

しかし、私の質問は、呼び出し元のインスタンスが Date/Double をヘルパー インスタンスにラップする必要があることを常に認識できるとは限らないため、ヘルパー クラスのないジェネリックでそれを行う方法があるかどうかということです。

前もって感謝します

4

1 に答える 1

2

通常、すべてのタイプには、すべてが実装する共通のインターフェースがあります。共通点のない多くのものと比較しても意味がありません。

ところで: a.compareTo(b) == -b.compareTo(a) は、比較対象の型が複雑になりすぎないことを意味します。

于 2012-04-17T12:28:01.093 に答える