调用参数化方法

aju*_*ric 0 java method-call

在学习Java Generics参数化时,我想到了这段代码:

public interface Comparable<T> {
    public int compareTo(T o);
}

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;
}
Run Code Online (Sandbox Code Playgroud)

我想测试它,所以我写了这个:

Integer[] iArray = new Integer[10];
for (int i=0; i<10; i++){
    iArray[i] = new Integer(i);
}

int a = countGreaterThan(iArray, Integer.valueOf(5));
Run Code Online (Sandbox Code Playgroud)

但是在调用方法时,编译器在最后一行给出了错误消息countGreaterThan:

The method countGreaterThan(T[], T) in the type Main is not applicable for the arguments (Integer[], Integer)
Run Code Online (Sandbox Code Playgroud)

我错过了一些明显的东西吗

SLa*_*aks 5

java.lang.Integer没有实现Comparable你刚写的接口.

您应该删除该接口并使用它实现的内置接口.