0

我有一个 TimeParameter 类,它实际上不是 Date 的子类,而是由 Date 等组成。在我的上下文中,日期或经常表示为双精度数(儒略日期)。很多时候,TimeParameter 不是与 TimeParameter 进行比较,而是与 Date、Double 甚至是 String(使用预定义格式编码的 Date)进行比较。原本TimeParameter实现的是Comparable接口,在compareTo(Object o)中,使用o进一步fork

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

用泛型做到这一点的一种可能性是使用一个辅助类,比如

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 回答