我有一个小程序,使用泛型方法处理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"
我该如何解决这个问题?
答案 0 :(得分:10)
您需要确保E
为Comparable
。正确的方法签名是
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) {
...
}