繁体   English   中英

Java:如果与两种或更多类型的对象相当,则使用泛型的可比较实现

[英]Java: Comparable implementation with Generics if comparable to two or more type of Objects

我有一个类TimeParameter,它实际上不是Date的子类,但是由Date和其他东西组成。 在我的背景下,日期或经常表示为双打(朱利安日期)。 通常,TimeParameter不与TimeParameter进行比较,而是与Date,Double或甚至String(使用预定义格式编码的日期)进行比较。 最初,TimeParameter实现了Comparable接口,而在compareTo(Object 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实现Comparable <CompareHelper>并继续进行。

但我的问题是,是否有一种方法可以在没有辅助类的泛型中执行此操作,因为调用实例并不总是能够知道它应该将Date / Double包装到帮助器实​​例中。

提前致谢

通常,所有类型都具有它们都实现的通用接口。 与许多没有任何共同点的东西相比,没有任何意义。

顺便说一下:a.compareTo(b)== -b.compareTa(a)意味着你不能对你所能比拟的类型过于复杂。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM