我需要实现一个方法,在使用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;
}
我添加了此代码以了解我正在尝试的内容。
答案 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
。但是,您将有创建新列表的性能开销。