- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
public static <T extends Comparable<T>> boolean isLessThan(T a, T b, double numericTolerance) {
if (a == null) {
return b != null;
}
boolean isLessThan = a.compareTo(b) < 0;
if (!isLessThan && a instanceof Number && b instanceof Number) {
isLessThan = ((Comparable) (((Number) a).doubleValue() - numericTolerance)).compareTo(((Number) b).doubleValue()) < 0;
}
return isLessThan;
}
Один из методов сравнения значений в пределах допустимой погрешности (последняя только для чисел).
Вроде бы и проще никак, но чувство говна не покидает. Советы по упрощению приветствуются.
Actine 16.09.2014 00:54 # 0
roman-kashitsyn 16.09.2014 08:57 # +2
А должен? С каким параметром дженерика он должен его имплементить? Попробуй написать адекватный Short.compareTo(Number).
Не забывай, что имплементить интерфейс в жабе можно только один раз, поэтому Integer уже не сможет заимплементить Comparable<Integer>.
Dummy00001 16.09.2014 01:46 # +1
roman-kashitsyn 16.09.2014 08:51 # +2
В общем, типичная проблема жаболюбов - неудержимое желание родить "универсальное" решение, в действительности заточенное под конкретную проблему без намёка на реюзабельность.
Actine 16.09.2014 10:59 # 0