JAVA泛型方法與類型限定


  泛型方法可以定義在普通類中,也可以定義在泛型類中
1 class ArrayAlg{
2     public static <T> T getMiddle(T...a){
3         return a[a.length/2];
4     }
5 }

 

 
注意:類型變量放在修飾符后( public static )
當調用泛型方法時,方法名前尖括號中放入具體的類型
String middle=ArrayAlg.<String>getMiddle("John","Q.","Public");

 

 
大多數情況下,方法調用可以省略<String>類型參數
String middle=ArrayAlg.getMiddle("John","Q.","Public");

 


 
類型變量的限定
有時,類或方法需要對類型變量加以約束
 1 class ArrayAlg{
 2     public static <T> T min(T[] a){
 3         if(a==null||a.length==0) return 0;
 4         T smallest=a[0];
 5         for(int i=1;i<a.length;i++)
 6             if(smallest.compareTo(a[i])>0)
 7                 smallest=a[i];
 8             return smallest;
 9     }
10 }

 

上例min方法內部,變量smallest類型為T,而且smallest必須有compareTo方法程序才能正常運行
解決的方法是限制T實現Comparable接口
public static <T extends Comparable> T min(T[] a)...

 

一個類型變量或通配符可以有多個限定,限定類型用&分隔
T extends Comparable & Serializable

 


免責聲明!

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



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