【发布时间】:2011-10-17 15:13:09
【问题描述】:
我想弄清楚如何比较 T[] 数组中的两个项目,这就是我所拥有的:
public static <T extends Comparable< ? super T>> T getLargest(T [] a, int low,
int high){
if(low>high)
throw new IllegalArgumentException();
T[] arrCopy = (T[]) new Object[high-low];
for(int i=low;i<high;i++){
if(a[i].compareTo(a[i-1])>0)
arrCopy[i]=a[i];
else
arrCopy[i]=a[i+1];
}
return arrCopy[0];
}
然后我得到错误:Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.Comparable;
关于如何解决这个问题的任何想法?
【问题讨论】:
-
您的方法标头中缺少“throws”子句,特别是“throws IllegalArgumentException”。
-
@0xCAFEBABE IllegalArgumentException 是运行时异常,不需要声明
-
那一定是实现 max() 方法的最迂回版本了 xX 你这里显然不需要任何数组。
-
@Voo:我不认为它实现了最大值
-
@newacct 好吧,它不起作用有几个原因,我很难理解为什么有人会编写这样的函数。但我通过简单的推论:一个名为
getLargest()的函数应该返回最大值;)
标签: java arrays generics compareto