關於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),說明編譯通過了,運行后也能得出正確答案。

經過查閱,是沒有使用泛型,comparable后面加上<Integer>,但是本題為了保持sort函數的復用性,還是不加比較好。

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM