我想写一些方法来测试Numbers
(Long
,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)未定义
我该如何解决这个问题?
答案 0 :(得分:3)
Number
未实施Comparable
(请参阅Why doesn't java.lang.Number implement Comparable?了解相关理由),但您可以将自己限制为Number
:
public static <T extends Number & Comparable<T>> boolean isBetween ...
答案 1 :(得分:0)
你需要进行施法。以下应该工作
return ((Comparable<T>) min).compareTo(number) <= 0 && ((Comparable<T>) max).compareTo(number) >= 0;