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

我有一个使用通用方法处理Java中数组的小程序:

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) 
publicstatic
E扩展了可比较的
。或者,实际上,艾略特·弗里希已经得到了什么:-P
E扩展了可比较的
。或者,实际上,艾略特·弗里希已经得到了什么:-P