我正在学习Java中的泛型方法。我想计算一个数组的元素数量大于给定的数字。这是我的代码:
public class GenericMethodExample {
public interface Comparable<T>{
public int compareTo(T o);
}
public static <T extends Comparable<T>> int countGreaterThan(T[] list, T element){
int count = 0;
for(T e:list){
if (e.compareTo(element)>0){
++count;
}
}
return count;
}
public static void main(String[] args){
Integer[] intArray = {5 ,10,8,1,0,3};
Integer u = new Integer(5);
System.out.print("Number of elements are greater than "+ u.toString()+" is:");
System.out.print(countGreaterThan(intArray,u));
}
}
我收到错误“countGreaterThan不适用于参数(Integer [],Integer)”。我怎么能改变我的代码?
感谢。
答案 0 :(得分:1)
您不应该自己编写Comparable
界面,它是java.lang
包中的默认Java界面(您甚至不必手动导入)。删除类中的接口声明,它将起作用:
public class GenericMethodExample {
public static <T extends Comparable<T>> int countGreaterThan(T[] list, T element){
int count = 0;
for(T e:list){
if (e.compareTo(element)>0){
++count;
}
}
return count;
}
public static void main(String[] args){
Integer[] intArray = {5 ,10,8,1,0,3};
Integer u = new Integer(5);
System.out.print("Number of elements are greater than "+ u.toString()+" is:");
System.out.print(countGreaterThan(intArray,u));
}
}
答案 1 :(得分:1)
您的方法countGreaterThan
适用于扩展您自己的Comparable
界面的类型。 Integer
不会扩展java.lang.Comparable
界面中的内置版本。因此,删除您的界面,它可以工作或使用扩展您的界面的自己的类。