compareTo与Comparable <object>

时间:2018-05-15 04:45:30

标签: java

所以使用其他人的代码,我有两个可比较的对象:

Comparable<Object> result1 =
Comparable<Object> result2 =

要对它们进行排序,代码会调用

result1.compareTo(result2);

大部分时间都有效,除非它没有。我坚持:

java.lang.ClassCastException: Cannot cast java.lang.Double to java.lang.Long

显然,如果我知道这些类型是什么进展,那么就可以施展它们,但我不知道。

同时与String进行随机比较也没有给出期望结果,所以这也不好:

retval = result1.toString().compareTo(result2.toString());

我没有番石榴或任何第三方库,所以问题是,我如何可靠地比较result1和result2?

UPDATE1

result1和result2对象将始终具有可比性。 (类型为String或Date,或者为Long / Double) 这里的问题是我得到Long和Double,对我来说,它是可比较的,但通过java的类转换异常。

UPDATE2 代码来自CSVJDBC驱动程序。 失败的行是:

https://sourceforge.net/p/csvjdbc/code/ci/master/tree/src/main/java/org/relique/jdbc/csv/CsvResultSet.java#l179

1 个答案:

答案 0 :(得分:0)

所以,根据@ AJNeufeld的评论,现在使用这个:

if(result1 instanceof Number && result2 instanceof Number) {
   retval = Double.compare(
              ((Number)result1).doubleValue(),
              ((Number)result2).doubleValue());
}  else {
   retval = result1.compareTo(result2);
}

但如果有人有更好的解决方案......