gpt4 book ai didi

Java:如果可以与两种或多种类型的对象进行比较,则可以与泛型进行比较

转载 作者:行者123 更新时间:2023-12-02 07:51:27 25 4
gpt4 key购买 nike

我有一个 TimeParameter 类,它实际上并不是 Date 的子类,而是由 Date 等组成。在我的上下文中,日期或经常表示为 double (儒略日期)。很多时候,TimeParameter 不是与 TimeParameter 进行比较,而是与 Date、Double 甚至 String(使用预定义格式编码的 Date)进行比较。最初,TimeParameter实现了Comparable接口(interface),在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 并以同样的方式进行。

但我的问题是,是否有一种方法可以在没有辅助类的情况下在泛型中做到这一点,因为调用实例并不总是能够知道它应该将 Date/Double 包装到一个辅助实例。

提前致谢

最佳答案

通常,所有类型都有一个它们都实现的公共(public)接口(interface)。与许多没有共同点的事物进行比较是没有意义的。

顺便说一句:a.compareTo(b) == -b.compareTo(a) 意味着您不能对要比较的类型变得太复杂。

关于Java:如果可以与两种或多种类型的对象进行比较,则可以与泛型进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10191156/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com