我尝试了很多方法来调用countGreaterThan()
函数(described here),但我无法让它工作。我知道我需要使用Integer
个实例而不是原语。这就是我尝试过的:
MainClass.java
public class MainClass {
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;
}
public static void main(String[] args){
Integer[] myArray = {0,1,2,3,4};
Integer myInt = new Integer(2);
int result = countGreaterThan(myArray,myInt);
System.out.println(result);
}
}
这是Comparable.java接口
public interface Comparable<T> {
public int compareTo(T o);
}
这就是我得到的错误 -
绑定不匹配:类型的泛型方法countGreatherThan(T [],T) MainClass不适用于参数(Integer [],Integer)。该 推断类型Integer不是有界的有效替代 参数&gt;
答案 0 :(得分:1)
如果我理解你的问题,看起来你正在呼叫countGreaterThan()
!你没做的就是打印结果或保存结果。
countGreaterThan(myArray,myInt);
应该是
int result = countGreaterThan(myArray, myInt);
System.out.println(result);
答案 1 :(得分:1)
我不得不怀疑你是否已经创建了自己的Comparable.java界面并且正在使用它。如果是这样,您就会看到错误,因为Integer不使用您的界面,而是使用核心Java的一部分。如果是这样,请删除Comparable.java类,删除它,然后使用属于核心Java的类。无需导入,因为它是java.lang包的一部分,这个包的类默认都是自动导入的。