【发布时间】:2013-07-07 18:09:16
【问题描述】:
我正在尝试编写一个通用容器并且我必须使用一个数组。我收到以下错误:
Exception in thread "main" java.lang.ClassCastException:
[Ljava.lang.Object; cannot be cast to [Ljava.lang.Comparable;
这是我的代码的一部分:
class MinFo<T extends Comparable> {
private final T[] array;
MinFo(int size){
array = (T[]) new Object[size];
}
T get(){
if(this instanceof Comparable){
int tmpPos = getNotNull();
T tmp = array[tmpPos];
int pos;
for(pos = tmpPos ; pos < array.length; getNotNull()){
if(tmp.compareTo(array[pos]) > 0)
tmp = array[pos];
}
这导致我从类声明中删除了“extends Comparable”。现在我有一个不同的错误:
error: cannot find symbol
if(tmp.compareTo(array[pos]) > 0)
^
symbol: method compareTo(T)
location: variable tmp of type T
where T is a type-variable:
T extends Object declared in class MinFo
在我看来,我赢不了。提前感谢您的帮助。
【问题讨论】:
-
让我们看看你的主要错误发生在哪里
-
你确定你说的不是
<T extends Comparable<T>>,或者最坏的情况是<T extends Comparable<? super T>>? -
@fge 你说得对,我有
<T extends Comparable<T>>。 -
为了获得最佳效果,请使用
<T extends Comparable<? super T>>
标签: java generics compiler-errors compare runtime-error