Java中的通用数组比较

时间:2016-06-11 16:50:39

标签: 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 = 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
    } 
}

但是,我收到一条错误消息:

"The method compareTo(E) is undefined for the type E"

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:10)

您需要确保EComparable。正确的方法签名是

public static <E extends Comparable<? super E>> void inspectArray(E[] inputArray) 

答案 1 :(得分:0)

您需要指定类型E具有compareTo方法,即接口Comparable<T>的合约,然后可以将其写为:

public static <E extends Comparable<E>> void inspectArray( E[] inputArray) {
   ...
}