考虑以下代码
/**
* Generic method with bounds
*/
public static <T> int countGreaterThan(Comparable<T>[] anArray,
T elem) {
int count = 0;
for (Comparable<T> e : anArray)
if (e.compareTo(elem) > 0)
++count;
return count;
}
/**
* Alternative to above
*/
public static <T extends Comparable<T>> int countGreaterThan(T[] anArray, T elem) {
int count = 0;
for (T e : anArray)
if (e.compareTo(elem) > 0)
++count;
return count;
}
看起来两者在功能上是相同的。但是,它们可以出现在同一个类中,显然彼此重载。当我使用以下代码时,似乎调用了第二种方法。如果没有第二个重载方法,则调用第一个方法。有人可以提供深入的解释吗?
Integer[] array = new Integer[10];
for (int i = 0; i < array.length; ++i)
array[i] = i;
System.out.println("Count > 5 = " + countGreaterThan(array, 5));