【发布时间】:2015-03-22 15:42:18
【问题描述】:
我已经定义了一个可以容纳泛型元素的数组。现在我将 array[index] 与另一个可比较的元素进行比较。下面是代码sn-p。
我已经定义了一个可以容纳泛型元素的数组。现在我将 array[index] 与另一个可比较的元素进行比较。下面是代码sn-p。
public class Test {
void methodArr(){
final Comparable[] arr = { 1, 2, 3, 4, 5};
Integer item = 10;
compare(arr, item);
}
private int compare(Comparable<?>[] arr, Comparable<?> item) {
return arr[0].compareTo(item); //Error in this line
}
}
现在它在方法 compare() 中给出了错误
arr[0].compareTo(item)
错误是:
类型中的方法 compareTo(capture#1-of ?) 可比较的不适用于论点 (可比)
我不明白我在哪里犯错了?我的对象是方法 compare() 应该将数组作为可比较类型的元素。
【问题讨论】:
-
I have defined an array which can hold element of generic type你能说明一下你是怎么做到的吗? -
所有项目都有一个带有泛型作为参数的 compareTo 吗?
-
@Everv0id 我已经声明了一个整数类型的数组,它是 Comparable 对象。可以在方法methodArr()中看到。
-
这不是泛型类型 -
Integer非常具体。你有一个Comparable[],因为数组是协变的(也就是说,因为Integer是Comparable,Integer[]是Comparable[])。 -
如果你声明一个
Integer的数组,你将只得到一个整数数组,而不是array which can hold element of generic type。
标签: java generics generic-programming