【发布时间】:2015-07-27 20:00:50
【问题描述】:
我有方法:
<T extends Comparable<T>> T moreApproxEqual(T object, T less, T greater) {
//TODO: return less or greater, depending on which is closer to object
return null;
}
我有一个 T 列表,从中我发现变量“less”和“greater”是列表中最接近变量“object”的两个值。如果没有关于对象的更多信息,有什么方法可以判断两个对象中的一个是否更接近“对象”?
【问题讨论】:
-
既然是
Comparable,你可以使用compareTo... -
compareTo并没有承诺任何关于这些值的“接近性”的事情,不过,我上次检查过。如果两个对象更不同,则不能依赖返回值更大。 -
@cHao 虽然这是真的,但如果您自己创建类,从技术上讲,您可以让您的
compareTo()方法返回一个距离(其中负数 => 小于,正数 => 大于)。不过,您可能应该为此创建一个distance()方法... -
@NoseKnowsAll:
distance()方法确实更合适。没有充分的理由像这样将compareTo()用于双重用途,因为它会添加您无法从任何其他实现中依赖的行为。
标签: java generics comparable approximate