我有一个类TimeParameter,它实际上不是Date的子类,而是由日期和其他东西组成的。在我的上下文中,日期或相当频繁地表示为双打(朱利安日期)。通常,TimeParameter不是TimeParameter,而是日期、双甚至字符串(用预定义格式编码的日期)。最初,TimeParameter实现了可比较的接口,在compareTo(对象o)中,o被进一步用于
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实现可比较,并进行同样的操作。
但我的问题是,在没有助手类的泛型中是否存在这样的方法,因为调用实例并不总是能够知道它应该将Date/Double包装到一个助手实例中。
提前感谢
发布于 2012-04-17 12:28:01
通常,所有类型都有一个它们都实现的公共接口。与许多没有共同之处的事物相比是没有意义的。
顺便说一句: a.compareTo(b) == -b.compareTo(a)意味着你不能对你要做的类型变得太复杂。
https://stackoverflow.com/questions/10191156
复制相似问题