Java中的泛型数组比较
我有一个使用通用方法处理Java中数组的小程序:Java中的泛型数组比较,java,generics,Java,Generics,我有一个使用通用方法处理Java中数组的小程序: public class GenericMethodTest { // generic method public static <E> void inspectArray(E[] inputArray) { for (int i = 1; i < inputArray.length; i++) { int tmp = in
public class GenericMethodTest {
// generic method
public static <E> void inspectArray(E[] inputArray) {
for (int i = 1; i < inputArray.length; i++) {
int tmp = inputArray[i-1].compareTo(inputArray[i]);
//unrelated lines are neglected
}
}
public static void main(String args[]) {
// Create arrays of Integer, Double and Character
Integer[] intArray = { 2, 2, 3, 4, 2 };
Character[] charArray = { 'A', 'A', 'G', 'A', 'A' };
inspectArray( intArray ); // pass an Integer array
inspectArray( charArray ); // pass a Character array
}
}
如何解决此问题?您需要指定类型
E
有一个compareTo
方法,即接口的契约Comparable
,然后可以将其编写为:
public static <E extends Comparable<E>> void inspectArray( E[] inputArray) {
...
}
publicstaticvoidinspectarray(E[]输入阵列){
...
}
您需要指定类型E
有一个compareTo
方法,即接口Comparable
的契约,然后可以将其编写为:
public static <E extends Comparable<E>> void inspectArray( E[] inputArray) {
...
}
publicstaticvoidinspectarray(E[]输入阵列){
...
}
您需要确保E
具有可比性。正确的方法签名是
public static <E extends Comparable<? super E>> void inspectArray(E[] inputArray)
public static您需要确保E
具有可比性。正确的方法签名是
public static <E extends Comparable<? super E>> void inspectArray(E[] inputArray)
publicstaticE扩展了可比较的
。或者,实际上,艾略特·弗里希已经得到了什么:-PE扩展了可比较的
。或者,实际上,艾略特·弗里希已经得到了什么:-P