我坚持这个java.lang.ClassException
。一般来说,我尝试使用一个简单的方法maxElement()
来简单地返回最高的整数,add()
方法完美地工作以及覆盖toString()
,这最后两个方法是继承的来自ArrayLinearList<T>
。 元素是一个数组。 ArrayLinearList 也能很好地工作。这是我的代码:
public class ArrayLinearList<T> implements LinearList<T>, Iterable<T>{
protected T[] element;
protected int size;
*constructors and methods*
// default constructor makes an T[]element of length 10
}
public class ArrayLinearListTaller1<T extends Comparable<T>> extends ArrayLinearList<T>{
public static void main(String[] args) {
ArrayLinearListTaller1<Integer>x=new ArrayLinearListTaller1<Integer>();
x.add(0, new Integer(10));
x.add(1, new Integer(5));
x.add(2, new Integer(7));
System.out.println(x);
System.out.println(x.maxElement());
}// end of main
public T maxElement() {
Arrays.sort(element,0,size);
T max= element[size-1];//*error here*
return max;
}
这就是我得到的:
[10,5,7]
Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.Comparable;
答案 0 :(得分:2)
传递给Arrays.sort()的元素必须实现Comparable接口。
将指定对象数组的指定范围排序 升序,根据其元素的自然顺序。 要排序的范围从索引fromIndex(包括)延伸到 index toIndex,独占。 (如果fromIndex == toIndex,则范围为 排序是空的。)
此范围内的所有元素都必须实现 可比的界面。
此外,此范围内的所有元素必须是 相互比较(即e1.compareTo(e2)一定不能抛出 对于数组中的任何元素e1和e2的ClassCastException。
因此,element
数组中的对象必须实现Comparable
接口。
答案 1 :(得分:0)
在我看来,无论你的元素类型是什么,都没有实现Comparable接口,你从Arrays.sort()获得异常。也许分享您的完整代码会有所帮助。