所以使用其他人的代码,我有两个可比较的对象:
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驱动程序。 失败的行是:
答案 0 :(得分:0)
所以,根据@ AJNeufeld的评论,现在使用这个:
if(result1 instanceof Number && result2 instanceof Number) {
retval = Double.compare(
((Number)result1).doubleValue(),
((Number)result2).doubleValue());
} else {
retval = result1.compareTo(result2);
}
但如果有人有更好的解决方案......