《資料結構與演算法》之泛型——使用介面型別表示泛型
阿新 • • 發佈:2018-12-16
如:考慮再由一些項組成的陣列中找出最大項的問題。基本的程式碼是型別無關的,但是它需要一種能力來比較任意兩個物件。因此,不能直接找出Object的陣列中的最大元素——我們需要更多的資訊。最簡單的方法就是找出Comparable的陣列中的最大元。要確定順序,可以使用compareTo方法,它對所有的Comparable都必然是現成可用的。
1、只有實現Comparable介面的那些物件才能夠作為Comparable陣列的元素被傳遞。僅有compareTo方法但並未宣稱實現Comparable介面的物件不是Comparable的,它不具備必需的IS-A關係。
2、如果Comparable陣列有兩個不相容的物件(例如:String和Shape),那麼CompareTo方法將丟擲異常ClassCastException。
3、基本型別不能作為Comparable傳遞,但是包裝類可以,因為它們實現了Comparable介面。
4、介面究竟是不是標準的庫介面倒不是必需的。
public class FindMaxDemo { public static void main(String[] args) { String[] st={"Joe","Bob","Bill"}; System.out.println(findMax(st)); } public static Comparable findMax(Comparable[] arr){ int maxIndex=0; for(int i=0;i<arr.length;i++){ if(arr[i].compareTo(arr[maxIndex])>0){ maxIndex=i; } } return arr[maxIndex]; } }