泛型允許您延遲編寫類或方法中的程式設計元素的資料型別的規範,直到實際在程式中使用它的時候。換句話說,在宣告類或方法的時候由於不知道使用者要傳入什麼樣型別的引數,所以在傳入型別的地方「挖乙個坑(「<t>」)",使用它的時候我們再用具體資料型別填上。
根據前面所學知識我們定義乙個類:
class data
此時n_data的資料型別已經確定為int型別,所以為他賦值的時候只能為int 型別,如果改寫為下面的泛型類:
class data
此時n_data的資料型別還不確定是什麼型別,所以為他賦值的時候需要指定t也就是n_data的型別,也就是填坑,
datadata = new data();
//指定t為int
datadata = new data();
//指定t為string
當然了,上面的例子中是不能夠指定t為陣列的,如果要讓n_data的型別為陣列的話,下面的例子可以滿足:
using system;
using system.collections.generic;
using system.linq;
using system.text;
namespace example
//輸入
public void setdata(int index,t value)
//輸出
public t getdata(int x)
}class program}}
結果為:2
這個我們以swap交換方法為例,在c++中swap函式是這麼寫的:
#include using namespace std;
template void swap1(t &a,t &b) //也可以看作泛型
int main()
static void main(string args)}}
結果:666 hc 這與c++的倒是很相似啊
委託也有泛型的,接著上面的例子:
using system;
using system.collections.generic;
using system.linq;
using system.text;
namespace example
//swap方法,ref是按位址傳遞
public void swap()
public void printvalue()
} class program}}
結果:
關於泛型就介紹這麼多了,又什麼錯誤的地方歡迎指出^_^
泛型 泛型類 泛型方法 泛型擦除
1 是什麼?一種允許我們在不確定引數型別時候使用的型別。例如我不知道a方法應該會傳string還是int,我就用個泛型先佔坑。2 為什麼要用泛型?泛型可以在編譯期自動確定具體型別,檢查型別是否匹配,可以提高 的重用率,減少冗餘編碼。3 泛型與object的區別?像上面說的我不知道方法a的引數型別,其...
泛型類,泛型方法,泛型介面
泛型,就是一種不確定的資料型別。如果在類後面加上 這個類就變成了泛型類。這個 t可以使用任意的字母代替。表示定義了一種不確定的資料型別,這種不確定的資料型別必須在使用這個類 比如建立物件 的時候才能確定下來。如果希望縮小泛型的範圍,延後泛型的確定時間,讓泛型在呼叫方法的時候確定,那麼我們可以使用泛型...
泛型 (2)泛型類 泛型方法 泛型介面
一 泛型類 定義person類 package cn.itcast.p2.bean public class person implements comparable public person string name,int age public int compareto person p ov...