java原始包装器的泛型

时间:2012-12-29 18:59:07

标签: java generics

  

可能重复:
  Comparing the values of two generic Numbers

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

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)未定义

我该如何解决这个问题?

2 个答案:

答案 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;