2016-06-11 67 views
1

我不得不使用泛型方法與數組中的Java處理的小程序:通用陣列比較在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" 

如何解決這個?

回答

9

您需要確保EComparable。正確的方法簽名應該是

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

您需要指定類型EcompareTo方法,那就是接口Comparable<T>的合同,那麼這可以寫成:

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

'E extends Comparable ''。或者,實際上,Elliott Frisch已經得到了什麼。 :-P –