如何使用泛型指定与 Comparable 类型的 super-class 关系

How to use generics to specify super-class relationships with Comparable type

我创建了一个 getMax 方法,它将 Comparable 数组作为参数并比较元素以找到最大元素,但我还必须实现泛型来指定 super-class 关系,但我没有真的明白我会怎么做。下面是我的非泛型方法的 src

public static Comparable getMax(Comparable [] array){
    Comparable max=array[0];
    for(int x=0; x<array.length;x++){
        if(array[x].compareTo(max)==1)
            max=array[x];
    }
    return max;
}

您可以像这样使用泛型重写您的 getMax 方法:

public static <T extends Comparable<T>> T getMax(T[] array){
    T max=array[0];
    for(int x=0; x<array.length;x++){
        if(array[x].compareTo(max)==1)
            max=array[x];
    }
    return max;
}

(你看,诀窍是用 T 替换 Comparable, 并声明 TComparable<T>。)

然后,例如你可以这样使用它:

String[] strings = { "Bob", "Alice", "Charlie" };
String maxString = getMax(strings);  // gives "Charlie"