泛型:我的理解就是它是用於篩選特定型別的資料或者物件。
一:泛型在集合中比較常見,因為其有以下兩個功能:
1、可以自動型別檢查 (在編譯期間)
2、可以自動型別轉換
二:
1、泛型類:
在類名後面使用 ,表示這個類是個泛型類, t 只是個佔位符,在初始化類的物件時候,傳入型別,
class genericstack
public static void main (string args )
2、泛型介面:
在介面名後面使用< t>
inte***ce comperable< t >
} // 使用students 類實現這個介面,並指定使用string型別;
class students implenems comperable < string>
}
3、泛型方法:
泛型方法的宣告在方法的修飾詞後面加上
// 定義個乙個泛型方法,返回值為t型別,
public t gett ( int index)
// 定義乙個返回值是e的方法,傳入的是e 型別的陣列;
public e dindminval(e array )
4、泛型的上界: 使用extends關鍵字來宣告,
例如:
型別 t 或者t的父類必須實現 comparable 介面,並且實現comparato方法,並且這個介面的型別是 t。只有這樣,t 的例項之間才能相互比較大小。例如,在實際呼叫時若使用的具體類是 student,那麼 dog 必須 implements comparable
class person implements comparable
@override
public int compareto(person o)
}class students extends person
}public class testalg3
}system.out.println(max);
return max;
}public static void main(string args);
string a=testalg3.findmax(s).name; // 呼叫比較大小方法
system.out.println(a);
}}
5、泛型的注意點:
1、不能new泛型型別的陣列 new t;
2、不能new泛型型別的物件? t obj = new t();
3、不能new 泛型型別的物件陣列。
object obj = new genericstack[10]; // 錯誤的,編譯不通過
4、不能用簡單型別作為泛型型別的引數
5、在static方法中,不能使用泛型型別的引數,因為:static方法不依賴物件,而型別的檢查需要物件。
三、泛型與繼承的關係
如果類a是類b的父類,但是在泛型中,泛型類a不是泛型類b的父類,而是並列關係。
例如 list< object>,list ,list< double> 、這三個是並列關係,沒有繼承關係。
四、 萬用字元: ?
list< object>,list ,list< double> 之間無繼承關係,可是他們都是list<?>的子類。
因為萬用字元的擦除機制,將當前類在編譯時擦除為object類,所以為其他類的父類;
例如寫乙個遍歷list的內容的方法
public static void printlist(arraylist<?> list)
system.out.println();
}
JAVA中的泛型
1 泛型的基本作用 有時候建立乙個類,需要這個類中的屬性是object型別的,可以時而為string型別,時而為long型別等。比如乙個座標類point,橫座標和縱座標可能是整型,可能是浮點型,也可能是字串型別,需要輸出的結果如下 如下 package org.mole.t public class...
Java中的泛型
我們在定義的時候 就會確定資料型別 而泛型 就是是資料型別引數化 集合框架中沒有使用泛型和使用泛型的比較 沒有使用泛型 list li new linkedlist li.add 100 int x int li.get 0 system.out.println x 使用泛型 listli new ...
java中的泛型
如果乙個類裡只接受整數型別,那麼無法加入浮點型別 如果用object類物件取代整數型別,那麼編譯器就要正常判斷當前物件實際是哪一種型別,這會很浪費時間。如果用某個未指定的型別t取代整數型別,實際使用時再加入具體型別,那麼就可以處理多種型別的物件。例如 public class store publi...