我有一个 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 包装到辅助实例中。
提前致谢