如何使用泛型指定与 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
,
并声明 T
为 Comparable<T>
。)
然后,例如你可以这样使用它:
String[] strings = { "Bob", "Alice", "Charlie" };
String maxString = getMax(strings); // gives "Charlie"
我创建了一个 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
,
并声明 T
为 Comparable<T>
。)
然后,例如你可以这样使用它:
String[] strings = { "Bob", "Alice", "Charlie" };
String maxString = getMax(strings); // gives "Charlie"