【发布时间】:2015-10-11 18:12:04
【问题描述】:
在下面的代码中,isSorted 方法导致我的静态代码分析器给我一个警告说:
Unchecked call to 'compareTo(T)' as a member of raw type 'java.lang.comparable'
现在,我从other posts 发现解决方案是像在等效函数isSortedG 中所做的那样生成函数。
但是,我不明白为什么第二种方法比第一种更好。据我所知,由于isSorted 将Comparable[] 作为参数,这应该导致对该函数的任何使用进行编译时检查,以确保输入数组确实是实现Comparable 的类型.
换句话说,静态检查器警告的这个“未经检查的调用”是什么?
public class SortChecker{
public boolean isSorted(Comparable[] arr){
if(arr.length == 1){
return true;
}
for(int i = 1; i < arr.length; ++i){
if(arr[i].compareTo(arr[i-1]) < 0){
return false;
}
}
return true;
}
public <T extends Comparable<? super T>> boolean isSortedG(T[] arr){
if(arr.length == 1){
return true;
}
for(int i = 1; i < arr.length; ++i){
if(arr[i].compareTo(arr[i-1]) < 0){
return false;
}
}
return true;
}
}
【问题讨论】:
标签: java