泛型是什麼,為什麼使用泛型:
泛型是指宣告時不指定型別,使用時指定型別,用編譯時用來宣告型別,使用時指定型別。這就意味著意味著編寫的**可以被不同型別的物件所重用。
在集合中如果使用object型別,那麼在使用過程中我們需要進行強制轉換型別,並且在編譯過程中不能夠進行型別轉換檢查異常。這樣就會容易在執行過程中產生異常。而使用泛型則在使用時指定詳細的型別,那麼編譯器就在編譯過程中進行型別檢查異常,同時也不再需要我們手動的強制型別轉換,大大減少了出現錯誤的情況,提高了**的重用率。
泛型的使用:
泛型只能適用於引用型別不能使用於基本型別。靜態方法的返回值和靜態屬性不能使用泛型。
泛型方法,在宣告時,泛型需要加在修飾符後面返回型別前面。
public static void run(t t){
t name;
泛型類的繼承與泛型的擦除:
public class father{
t name;
public void run (t t){
1子類在宣告時指定泛型的具體型別
class child extends father (){
string name;
@override
public void run (string t){
2子類使用泛型,父類擦除泛型
class child extends father{
object name;
@override
public void run(object t){
其實這時候泛型已經與父類的泛型無關,此時父類的泛型指定為object然後子類自己使用泛型。以下皆是這種情況。
3子類使用泛型,父類也使用泛型。
class child extendes father{
t name;
@override
public void run (t t){
這時候要求子類泛型個數大於等於父類泛型,字母要求父類有的子類必須要有。位置不定。
4子類和父類同時擦除
class child exteds faher{
object name;
@override
public void run (object t){
介面的實現類的泛型與繼承關係一致。
注意:擦除統一使用object型別但是他不完全等同於object型別 他不會型別檢查。
public static void main(string args){
fatherf=new father();
father f1=new father();
f1.name=new string("ssss");//1
f.name=new string("ssss");//2
// 這樣在使用過程中出現問題。1不會出現問題2會提示型別轉化出錯。這時候會發現,即使擦除了泛型預設指定object但是不會進行型別檢查。
泛型的使用
unit unit1 inte ce uses winapi.windows,winapi.messages,system.sysutils,system.variants,system.classes,vcl.graphics,vcl.controls,vcl.forms,vcl.dialogs ...
泛型的使用
目前這個專案使用的jsp servlet j abean,沒有使用其它的框架。在處理資料庫的時候,多張表就對應多個dao,而每個dao都有增刪改查的方法,顯得很冗餘。於是寫了乙個commondao,其中包含了其他dao裡面共有的一些方法。然後讓其他的dao類繼承commondao,servlet中直...
泛型的使用
型別引數t 泛型的型別引數t可以看作是乙個佔位符,它不是一種型別,它僅代表了某種可能的型別。型別引數t可以在使用時用任何型別來代替。型別引數t的命名準則如下 使用描述性名稱命名泛型型別引數,除非單個字母名稱完全可以讓人了解它表示的含義,而描述性名稱不會有更多的意義。public inte ce is...