3

可能重复:
比较两个通用数字的值

我想写一些测试方法NumbersLong,Integer等),如下所示:

public static <T extends Number> boolean isBetween(T min, T max, T number) {
    return min.compareTo(number) <= 0 && max.compareTo(number) >= 0; 
}

但我得到一个编译错误说:

类型 T 的 compareTo(T) 方法未定义

我怎样才能解决这个问题?

4

2 回答 2

3

Number没有实现Comparable(请参阅Why doesn't java.lang.Number implement Comparable?了解基本原理),但您可以将自己限制在执行以下操作的Numbers 中:

public static <T extends Number & Comparable<T>> boolean isBetween ...
于 2012-12-29T19:09:38.367 回答
0

你需要做铸造。以下应该工作

return ((Comparable<T>) min).compareTo(number) <= 0 && ((Comparable<T>) max).compareTo(number) >= 0;
于 2012-12-29T19:16:48.950 回答