關於java中「使用了未經檢查或不安全的操做、有關詳細信息,請使用 ——Xlint:unchecked從新編譯」

今天看《算法 第4版》排序章節時,發現了一個了一個小問題。先貼一下代碼:算法

 1 public class Selection{  2      public static void main(String[]args){  3          Integer[]a={3,5,7,3,8,27,679,8,564,23};  4  sort(a);  5  show(a);  6  }  7      public static void sort(Comparable<>[]a){  8          for(int i=0;i<a.length-1;i++){  9              int min=i; 10              for(int j=i+1;j<a.length;j++){ 11                  if(less(a[j],a[min])) 12                      min=j; 13  } 14  exch(a,i,min); 15  } 16  } 17      private static boolean less(Comparable v,Comparable w){ 18          return v.compareTo(w)<0; 19  } 20      private static void exch(Comparable[]a,int i,int j){ 21          Comparable t=a[i]; 22          a[i]=a[j]; 23          a[j]=t; 24  } 25      private static void show(Comparable[]a){ 26          for(int i=0;i<a.length;i++){ 27              System.out.print(a[i]+"  "); 28  } 29  System.out.println(); 30  } 31 }

直接編譯會提示:數組

 

可是已經生成字節碼文件(.class),說明編譯經過了,運行後也能得出正確答案。less

通過查閱,是沒有使用泛型,comparable後面加上<Integer>,可是本題爲了保持sort函數的複用性,仍是不加比較好。函數

還有值得注意的一點是,定義數組時不能使用(int,double,string)等,而應該使用(Integer,Double,String),不然向Comparable轉化的時候會出錯。spa

相關文章
相關標籤/搜索