如何使用泛型找到最大数量?

时间:2014-10-10 01:36:55

标签: java generics

我需要实现一个方法,在使用Generics提供三个数字时计算最大数量。我知道如何使用Comparable类来执行此操作,但我只需要使用数字。

这是代码。

 public static <T extends Math>  T compareThreeValue(T x, T y, T z){ 
     T max=Math.max(Math.max(x, y), z);
     return max; 
 }

我添加了此代码以了解我正在尝试的内容。

1 个答案:

答案 0 :(得分:5)

由于数字的所有原始包装器都扩展了数字并且它们实现了可比性,所以

 public static <T extends Number & Comparable<T>> T max(T x, T y, T z) {
    return max(max(x, y), z);
}

public static <T extends Number & Comparable<T>> T max(T x, T y) {
    if (x.compareTo(y) > 0) {
        return x;
    }
    return y;
}

你也可以使用

Collections.max(Arrays.asList(x,y,z))

因为所有数字都是Comparable。但是,您将有创建新列表的性能开销。